2010-12-16 51 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,儘管您只能從客戶端訪問它。