我在服务器上有RemoteRamdom类:
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 :(得分:0)
你确定它是一个远程对象吗?
您的代码基本上不会显示重定向Activator以从服务器实际引用该类的配置。 Witbhout配置,激活器将愉快地创建一个LOCAL CLASS。
答案 1 :(得分:0)
返回的对象r将被序列化并在本地重新创建,因为Random类被标记为可序列化,并且不从MarshalByRefObject继承。
您可以像创建remoteRandom一样在服务器上创建r,尽管您只能从客户端访问它。