In .NET remoting, proxies are generated transparently by the remoting runtime, hence it is necessary to have the remote object metadata at the client side.
This metadata can be obtained in many ways. I only knew of the 'sharing interfaces' and 'soapsuds.exe' utility, but there are a couple more --
– Shared interfaces
– Shared base classes
– Shared implementation (implementation is copied to server and client)
– SoapSuds.exe (lets you extract metadata from running server or from an Assembly)