[Mono-list] Remoting with interface definition

Lluis Sanchez lluis@ideary.com
Mon, 31 Mar 2003 16:28:47 +0200

Remoting with interface definitionThis should work now.

----- Original Message -----
From: Urs Muff
To: 'mono-list@lists.ximian.com'
Sent: Saturday, March 15, 2003 1:35 AM
Subject: [Mono-list] Remoting with interface definition

Using the following concept is not working on mono, but in the MS .Net
Common Lib:
intercace IServerObj
        string Name { get; }
        ChannelServices.RegisterChannel(new TcpChannel(0));
IServerObject server =
Activation.GetObject(typeof(IServerObj),"tcp://localhost:8085/Test") as
string name = server.Name;
class ServerObject : MarshalByRefObject, IServerObject
        public string Name { get { return "Test Server"; } }
        ChannelServices.RegisterChannel(new TcpChannel(8085));

This is a very important concept, since it allows hiding the implementation
from the Client.
The crash is in corlib : Remoting.TypeInfo (since it assumes to be derived
from object or MarshalByRefObject, which it is not, since it is a pure
interface).  Fixing that does not help either since it crashes later than,
since it still assumes it has to be a MarshalByRefObject (which it
eventually should be since it will become a Proxy [right?]).  I'm not that
familiar with the mono remoting implementation, but that seems like a design
problem, unless I'm doing something wrong.
- Urs C. Muff
Systems Architect       - Research Lab