WCF supports the ability to reuse links that are already included in the project. In this sense, you can create an assembly of contracts (an assembly containing subtle domain models (e.g. Person , etc.), to which you can add your own logic.
You can then add the assembly to both your WCF service and the calling client projects, as well as give WCF the ability to reuse any existing references. Thus, what is pushed away from your service is deserialized to a local copy of Person , but not Person , which is generated as a proxy server, you actually get a full instance by which you can make method calls.
Remember, you are sorting by value in this case. Any changes made to the Person instance are local only for the client, you will need to transfer it back to your WCF service (via serialization) again so that the service can recognize any changes and act accordingly.
source share