public class ServerObject:MarshalByRefObject { public Person GetPersonInfo(string name,string sex,int age) { Person person = new Person(); person.Name = name; person.Sex = sex; person.Age = age; return person; } } 这个类只实现了最简单的方法,就是设置一个人的基本信息,并返回一个Person类对象。注重这里返回的Person类。由于这里所传递的Person则是以传值的方式来完成的,而Remoting要求必须是引用的对象,所以必须将Person类序列化。
public interface IServerObject { Person GetPersonInfo(string name,string sex,int age); }
public interface IServerObjFactory { IServerObject CreateInstance(); }
public class ServerObject:MarshalByRefObject,IServerObject { public Person GetPersonInfo(string name,string sex,int age) { Person person = new Person(); person.Name = name; person.Sex = sex; person.Age = age; return person; } }
public class ServerObjFactory:MarshalByRefObject,IServerObjFactory { public IServerObject CreateInstance() { return new ServerObject(); } } 然后再客户端的远程对象中只提供工厂接口和原来的对象接口:
public interface IServerObject { Person GetPersonInfo(string name,string sex,int age); }
public interface IServerObjFactory { IServerObject CreateInstance(); } 我们用WellKnown激活模式注册远程对象,在服务器端: