元の投稿
分散リモート メソッド呼び出しシステムを実装するにはどうすればよいですか?
次のようなものを作成しようとしています。
- 個々の「ホスト」を追跡するためのマスター サーバー。
- ホストは、プロキシ オブジェクト インターフェイス ベースのプログラミング スタイルを使用して、ネットワーク上の他のホストと通信できます。次に例を示します。
var result = remoteHost.MyMethod(5);
SuperPoolやScsなどの RMI ライブラリを使用してみましたが、いくつかの基本的な問題があります。
- SCS は、サーバー --> クライアントまたはクライアント --> サーバー通信のみをサポートし、クライアント --> クライアント通信はサポートしません。
- 私が知る限り、SuperPool は同じものしかサポートしていませんが、この図はそうでないことを示唆していますが、これを行う方法に関するドキュメントには何も見つかりません。
違いは、クライアント -> サーバーまたはサーバー -> クライアントのみの通信ではなく、クライアント上の任意のコンポーネントが他のクライアント上のコンポーネントとも通信できることです。
これをどのように実装することをお勧めしますか (おそらくこれらの既存のソリューションをベースとして使用します)、または機能する可能性のある他の既存のソリューションはありますか?
より広範な例
これが私がやろうとしていることの図です:
重要な注意:クライアントは互いに接続しません。
プロセス:
- Client1 がサーバーに接続します
- Client2 がサーバーに接続します
- Client1 は、Client2 のコンポーネントがサーバー、別のクライアント、またはそれ自体に存在するかどうかを知らずに、Client2 のメソッドを呼び出します。
アイデアは、2 番目のクライアントでメソッドを呼び出すためのクライアント --> サーバー --> クライアント通信パスを許可することを除いて、SuperPool が行ったことと同じです。