1

同じ PC と異なる PC を介して通信する必要がある 2 つのプロセスがあります。ローカルの場合、プロセス通信は ProcessAと Process などの異なるプロセス間で行われますB
リモートの場合A、異なる PC で実行されている Process の 2 つのインスタンスの間に存在します。
私はそれらをゼロから作成しますが、最善のアプローチは何だろうと思っています。私はRMIとソケットを認識していますが、説明されているように私のケースについて疑問に思っていました。また、交換されるメッセージが少なく、APIの数が非常に少ないことも考慮して、これに対する標準的なアプローチ/ライブラリがあるかどうか.
どんな提案でも大歓迎です

@EJP コメント後の更新:
私の関心は、1) 公開される API が非常に小さく、メッセージも同様に小さいため、通信の要件を軽い方法で実装することです 2) 可能であれば、新しい一般的なフレームワークを使用して学習します (RMI は既に知っています)およびソケット)

4

5 に答える 5

4

メッセージング フレームワークを探しているだけの場合は、次のような利用可能なものがたくさんあります。

ただし、サードパーティのフレームワークを使用すると、アプリケーションに依存関係が追加されます。あなたのケースのように非常に単純なものである場合、クライアント/サーバーのパラダイムにはTCPクライアント/サーバーを書くだけで十分であるか、パブリッシャー/サブスクライバーのパラダイムを探している場合は、UDPマルチキャストの使用を検討できます。データをマーシャリングおよびアンマーシャリングしてバッファリングし、典型的な JAVA ソケット API を使用してネットワークに送信できるようにする場合は、Serializable を拡張するデータ クラスが必要です。

于 2013-01-11T07:44:49.327 に答える
2

Thriftをご覧になることを強くお勧めします。私が使用したすべてのテクノロジ (Web サービス、RMI、XML-RPC、Corba が思い浮かびます) の中で、現在最も気に入っています。基本的に必要な手順は次のとおりです。

  1. Thrift コンパイラをダウンロードします。
  2. Maven の依存関係を追加します (コンパイラと同じバージョンであることを確認してください!) 私は現在 0.8.0 を使用しています。
  3. Thrift IDL を作成します (信じられないほど簡単です。例がたくさんあるので、Google で検索してください)。
  4. Java 用にコンパイルします。
  5. サーバー/クライアントを書きます。

一般に、約 30 行のコードでサーバーとクライアントをまとめることができます。速度と信頼性の点で、これまで失敗したことはありません。

于 2013-01-11T07:28:05.053 に答える
0

JMXは良い代替手段です。

例 :

http://www.javalobby.org/java/forums/t49130.html

IMB JMX の例

http://alvinalexander.com/blog/post/java/source-code-java-jmx-hello-world-application

于 2013-01-11T07:23:26.960 に答える
0

何か新しいことを学びたいなら、OpenSplice を検討します。理由は非常に単純です。上記で提案されたテクノロジーの中で、データ中心の抽象化を提供するのは 1 つだけです。

OpenSplice の優れた点は、グローバル データ スペースを抽象化できることですが、このグローバル データ スペースの実装は完全に分散されており、非常に高いパフォーマンスを発揮します。

http://www.slideshare.net/angelo.corsaroで入手できるスライドをいくつか見てみましょう。きっとこの技術に夢中になるでしょう。

最後に、OpenSplice はオープン ソースです。

ハッピーハッキング。

A+

于 2013-04-26T10:18:11.543 に答える
0

Versile Java (完全な開示: 私は開発者の 1 人です) を見たことがあるかもしれませんが、それは少なくともあなたの基準 #1 を満たしています。API ドキュメントから、リモート対応オブジェクトの作成、サービスの実行、サービスへの接続の例をいくつか示します。

于 2013-01-11T10:10:19.317 に答える