今天在看关于TCP Remoting的时候有一个地方不太理解,请各位大侠指点一下
在Remoting物件中有一个类声明如下
public class Customer : MarshalByRefObject在客户端引用了DLL后,实例化如下
mCustomer = new Customer("张三", Convert.ToByte("24"));
在运行的时候,我看了一下,customer的运行信息,发现是运行目录是在服务器端,而不是我引用的dll所在的文件夹(客户端),请问如果一个派生自MarshalByRefObject的类,在运行时,只能有一个实例吗这是101 C# sample中的How to Tcp Remoting中的一个例子
偶新手,不知道问的对不对

解决方案 »

  1.   

    你说的是有一定的出入的远程对象的激活模式分服务端激活和客户端激活两种,(也就是对象分服务端激活对象或者说是知名对象和客户端激活对象两种)
    你看到的应是客户端激活方式客户端激活的对象是其生存期由调用应用程序域控制的对象,正如对象对于客户端是本地对象时对象的生存期由调用应用程序域控制一样。对于客户端激活,当客户端试图创建服务器对象的实例时发生一个到服务器的往返过程,而客户端代理是使用对象引用 (ObjRef) 创建的,该对象引用是从在服务器上创建远程对象返回时获取的。每当客户端创建客户端激活的类型的实例时,该实例都将只服务于该特定客户端中的特定引用,直到其租约到期并回收其内存为止。如果调用应用程序域创建两个远程类型的新实例,每个客户端引用都将只调用从其中返回引用的服务器应用程序域中的特定实例。看一下这个链接
    http://blog.csdn.net/deepbluekk/archive/2006/03/14/624455.aspx