2010-12-16 9 views
0

私はサーバー上のRemoteRamdomクラスを持っている:.NETリモート処理 - プロキシの問題

SERVER:

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

    public Random GetRandomObject() 
    { 
     return r; 
    } 
} 

CLIENT:

 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()はサーバーアプリケーションを終了しても作業を続けます。

サーバーではどのように動作しますか?

答えて

0

リモートオブジェクトであることを確認してください。

あなたのコードでは、Activatorをリダイレクトして実際にクラスをサーバーから参照するような設定は基本的には表示されません。 Witbhout構成では、アクティベータは喜んでローカルクラスを作成します。

+0

構成は、ソリューションの.configファイルを使用して行われます。私は詳細をスキップしました。 –

0

返されるオブジェクトrは、Randomクラスがシリアル化可能としてマークされ、MarshalByRefObjectから継承されないため、ローカルにシリアル化され、再作成されます。

remoteRandomの作成と同じ方法でサーバー上にrを作成できますが、クライアントからのみアクセスできます。