2010-12-16 74 views
0

我有服务器上RemoteRamdom类:.NET远程 - 代理问题

SERVER:

public class RemoteRandom : MarshalByRefObject 
{ 
    Random r = new Random(); 

    public Random GetRandomObject() 
    { 
     return r; 
    } 
} 

客户:

 RemoteRandom remoteRandom = (RemoteRandom)Activator.GetObject(typeof(RemoteRandom), "tcp://localhost:1000/UzakNesne"); 
     Random r = remoteRandom.GetRandomObject(); 

     while (true) 
     { 
      Console.WriteLine(r.Next()); 
     } 

问题:客户端可以调用GetRandomObject方法成功。但是,当我调用r实例的方法时,它在本地运行。我的意思是,即使我关闭了服务器应用程序,r.Next()仍继续工作。

r如何在服务器上工作?

回答

0

你确定它是一个远程对象吗?

您的代码基本上不显示重定向Activator实际引用服务器的类的配置。 Witbhout配置,激活者将愉快地创建一个LOCAL CLASS。

+0

配置是通过解决方案中的.config文件完成的。我只是略过了细节。 – 2010-12-16 11:14:55

0

返回的对象r将被序列化并在本地重新创建,因为Random类标记为可序列化,并且不会从MarshalByRefObject继承。

您可以使用创建remoteRandom的相同方式在服务器上创建r,尽管您只能从客户端访问它。