.NET Remoting - 代理问题

时间:2010-12-16 09:34:20

标签: .net remoting rmi rpc .net-remoting

我在服务器上有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如何在服务器上运行?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

您可以像创建remoteRandom一样在服务器上创建r,尽管您只能从客户端访问它。