I do not use generated proxies at all. I just have a general assembly between my client and server that defines the interfaces to the service contract + next sleight of hand.
It looks good, right? Create this object, and then just modify your calls to use the channel member.
You can also use ChannelFactory to get the same result (I suppose they made Channel a protected member of ClientBase to encourage developers to use ChannelFactory), but I prefer this mechanism, since you end up with one object that encapsulates communication control and calls through the wire. Obviously, this way you lose the async methods from svcutil, but this is very easy to do with delegates.
source share