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激活模式注冊遠程對象,在服務器端: