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

  • :aspxer  Դ:internet  :2007-5-15 20:46:10  ؼ:.net
  • 客户端激活模式有两种方法:

    1) 调用RemotingConfiguration的静态方法RegisterActivatedClientType()。这个方法返回值为Void,它只是将远程对象注册在客户端而已。具体的实例化还需要调用对象类的构造函数。

    RemotingConfiguration.RegisterActivatedClientType(

    typeof(ServerRemoteObject.ServerObject),

    "tcp://localhost:8080/ServiceMessage");

    ServerRemoteObject.ServerObject serverObj = new ServerRemoteObject.ServerObject();

    2) 调用进程Activator的CreateInstance()方法。这个方法将创建方法参数指定类型的类对象。它与前面的GetObject()不同的是,它要在客户端调用构造函数,而GetObject()只是获得对象,而创建实例是在服务器端完成的。CreateInstance()方法有很多个重载,我着重说一下其中常用的两个。

    a、 public static object CreateInstance(Type type, object[] args, object[] activationAttributes);

    参数说明:

    type:要创建的对象的类型。

    args :与要调用构造函数的参数数量、顺序和类型匹配的参数数组。如果 args 为空数组或空引用(Visual Basic 中为 Nothing),则调用不带任何参数的构造函数(默认构造函数)。

    activationAttributes :包含一个或多个可以参与激活的属性的数组。

    这里的参数args是一个object[]数组类型。它可以传递要创建对象的构造函数中的参数。从这里其实可以得到一个结论:WellKnown激活模式所传递的远程对象类,只能使用默认的构造函数;而Activated模式则可以用户自定义构造函数。activationAttributes参数在这个方法中通常用来传递服务器的url。

    假设我们的远程对象类ServerObject有个构造函数:

    ServerObject(string pName,string pSex,int pAge)

    {

    name = pName;

    sex = pSex;

    age = pAge;

    }

    那么实现的代码是:

    object[] attrs = {new UrlAttribute("tcp://localhost:8080/ServiceMessage")};

    object[] objs = new object[3];

    objs[0] = "wayfarer";

    objs[1] = "male";

    objs[2] = 28;

    ServerRemoteObject.ServerObject = Activator.CreateInstance(

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