• λ我爱Aspx >> Asp.Net >> Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇
  • Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇

  • :aspxer  Դ:internet  :2007-5-15 20:46:10  ؼ:.net
  • 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类序列化。

    因此,在Remoting中的远程对象中,如果还要调用或传递某个对象,例如类,或者结构,则该类或结构则必须实现串行化Attribute[SerializableAttribute]:

    [Serializable]

    public class Person

    {

    public Person()

    {

    }

    private string name;

    private string sex;

    private int age;

    public string Name

    {

    get {return name;}

    set {name = value;}

    }

    public string Sex

    {

    get {return sex;}

    set {sex = value;}

    }

    public int Age

    {

    get {return age;}

    set {age = value;}

    }

    }

    将该远程对象以类库的方式编译成Dll。这个Dll将分别放在服务器端和客户端,以添加引用。

    在Remoting中能够传递的远程对象可以是各种类型,包括复杂的DataSet对象,只要它能够被序列化。远程对象也可以包含事件,但服务器端对于事件的处理比较特殊,我将在本系列之三中介绍。

    三、服务器端

    根据第一部分所述,根据激活模式的不同,通道类型的不同服务器端的实现方式也有所不同。大体上说,服务器端应分为三步:

    1、注册通道

    要跨越应用程序域进行通信,必须实现通道。如前所述,Remoting提供了IChannel接口,分别包含TcpChannel和HttpChannel两种类型的通道。这两种类型除了性能和序列化数据的格式不同外,实现的方式完全一致,因此下面我们就以TcpChannel为例。

    注册TcpChannel,首先要在项目中添加引用“System.Runtime.Remoting”,然后using名字空间:System.Runtime.Remoting.Channel.Tcp。代码如下:

    Ҷƪл˵?
  • һƪMicrosoft .Net Remoting系列专题之三:Remoting事件处理全接触
    һƪ一步一步学Remoting之四:承载方式