RemotingServices.Marshal allows you to publish an existing instance remotely. Both for server activated (wellknown) and client activated objects remoting controls when the object is instantiated and initialized. Using Marshal allows you to initialize the object before making it available remotely. The published object will still follow the same lifetime rules, meaning it will be disconnected when the lease on it expires.

Do disconnect an object published to remoting use RemotingServices.Disconnect (not RemotingServices.Unmarshal). Unmarshal is mostly a client side function to create a transparent proxy from an ObjRef.