I have a webservice that I\'m calling from a windows forms application (both .NET, both in the same solution), and I\'d like my webservice to return a custom object from els
If you are using WCF is it fairly easy to use the same data contracts and service interface between the client and the consumer. You can either compile in the generated proxy class and modify it to use the correct namespaces or use the ChannelFactory class to create a dynamic proxy for you.
The first solution is very brittle and will cause you to modify the proxy class every time the service interface changes. The second technique works fairly well and we used in during a previous project I worked on. With either of these methods you need to make sure all your callers continue are up to date with the latest version of the interface.
From the way you are describing the problem it sounds like you want the service and the client to share the same instance. Since WCF serializes and deserializes your types as you send them to and from the service you would have to do something a bit more clever. Is this what you meant?
If you are using svcutil.exe to generate a WCF client proxy, you can use /reference on the command-line to specify the assembly containing the common class. Svcutil should reuse that class definition instead of generating new one in the service proxy namespace.
Also, this will work only if your common class is serializable and passed by value (i.e. it's exposed as a data contract, not as a service contract).
I am not sure but when you compile a .NET web service it will create a DLL file which you can try using that for the local. But when I am building service oriented applications, I create different layers within my solution for e.g Data Access Layer, Logic Layer, Service Layer, UI Layer, Controller Layer, and for example in the Controller Layer I will do a user authentication method which is connected with the Data Access Layer and Logic Layer and then I will call that method on service layer and I can also call it on the UI layer and if I call it from within the UI layer it is called locally, when I want to use it from the service layer, I will create a web method using that method which will return a bool or username etc.