1

Java RMI の経験がないので、素朴な質問がありますが、インターネットを検索しても答えがわかりません。

質問:

私には、2 つのシナリオがあります。

シナリオ 1 : ローカルから Java プログラムを開始し、実行中にリモート マシンに保存されているクラスからメソッドを呼び出し、そのメソッドのクラスがローカル マシンにダウンロードされ、実行を再開します。

シナリオ 2 : ローカルから Java プログラムを開始し、実行中にリモート マシンに格納されているクラスからメソッドを呼び出し、そのメソッドがリモート マシンで実行され、結果がローカル マシンに返されます。 . (これにはクラス/オブジェクトの転送が必要ですか? )

Java RMI はどれを使用しますか? それともどちらでもない?

RPC のウィキペディアから: 「RPC により、コンピューター プログラムはサブルーチンまたはプロシージャを別のアドレス空間 (通常は共有ネットワーク上の別のコンピューター) で実行できます」、それは 2 番目のシナリオのようです。

しかし、この論文Reducing Data Transfer during Remote Classloading in Java RMIによると、それは最初のシナリオのようです。

4

2 に答える 2

1

RMI を使用する場合、基本的にクライアントとサーバー間で共有されるインターフェイスがあります。サーバーには実装が必要であり、クライアントにはこの実装が必要ではありません。そのため、クラスのロードやクライアントからサーバーへのロジックの転送は一切行われず、クライアントはサーバー インターフェイスの実装をまったく認識しません。

RMI はメソッド パラメータをシリアライズして転送します。その後、サーバー ロジックが実行され、結果がシリアライズされてクライアントに転送されます。

于 2013-10-24T17:07:26.260 に答える