回答:
RPCはCベースであり、構造化プログラミングのセマンティクスを備えているため、RMIはJavaベースのテクノロジーであり、オブジェクト指向です。
RPCを使用すると、サーバーにエクスポートされたリモート関数を呼び出すだけで済みます。RMIでは、リモートオブジェクトへの参照を作成してそのメソッドを呼び出すことができます。また、多くのJVMインスタンスに分散できるリモートオブジェクト参照を渡して返すことができるため、はるかに強力です。 。
RMIは、純粋なクライアント/サーバーアーキテクチャよりも複雑なものを開発する必要が生じたときに際立ちます。個々の接続を明示的に確立する必要なく、すべてのクライアントが通信できるように、ネットワーク上にオブジェクトを分散するのは非常に簡単です。
RPCとRMIの主な違いは、RMIにはオブジェクトが含まれることです。プロキシ関数を使用してプロシージャをリモートで呼び出す代わりに、プロキシオブジェクトを使用します。
RMIの透過性は高くなります。つまり、テクノロジーが言語に統合されているため、オブジェクト、参照、継承、ポリモーフィズム、および例外の悪用によるものです。
RMIはRPCよりも高度であり、実行時にインターフェイスを変更できる動的な呼び出しと、抽象化の追加レイヤーを提供するオブジェクトの適応が可能です。
1.アプローチ:
RMIは、ユーザーが呼び出す必要のあるオブジェクトとオブジェクトのメソッドをユーザーが知る必要があるオブジェクト指向のパラダイムを使用します。
RPCはオブジェクトを扱いません。むしろ、すでに確立されている特定のサブルーチンを呼び出します。
2.働く:
RPCを使用すると、ローカルコールによく似たプロシージャコールを取得できます。RPCは、ローカルコンピューターからリモートコンピューターへの呼び出しの受け渡しに伴う複雑さを処理します。
RMIもまったく同じことを行いますが、RMIはオブジェクトと呼び出されているメソッドへの参照を渡します。
RMI = RPC +オブジェクト指向
3.より良いもの:
RMIはRPCに比べて優れたアプローチであり、特に大規模なプログラムでは、問題が発生したかどうかを簡単に識別できるコードが提供されるため、RMIの方が優れています。
4.システム例:
RPCシステム: SUN RPC、DCE RPC
RMIシステム: Java RMI、CORBA、Microsoft DCOM / COM +、SOAP(Simple Object Access Protocol)
リモートプロシージャコール(RPC)は、ローカルマシンまたはリモートマシンにある別のプロセスの関数を呼び出すことができるプロセス間通信です。
リモートメソッド呼び出し(RMI)は、オブジェクト指向パラダイムをサポートするRPCをJavaに実装するAPIです。
RPCの呼び出しは、Cプロシージャを呼び出すようなものと考えることができます。RPCはプリミティブデータ型をサポートし、RMIはメソッドパラメータ/戻り型をJavaオブジェクトとしてサポートします。
RMIは、RPCとは異なり、プログラミングが簡単です。一連のプリミティブデータ型ではなく、オブジェクトの観点からビジネスロジックを考えることができます。
RPCは、Javaに限定されているRMIとは異なり、言語に依存しません。
RMIはRPCより少し遅い
クライアントがサーバーへのプロキシオブジェクト(またはスタブ)を送信し、両方の点で、RMIまたはリモートメソッドInvokationは、RPCまたはリモートプロシージャコールと非常によく似ていますが、微妙な違いは、クライアント側のRPC呼び出すのある機能プロキシ機能を通って、RMIは、呼び出すメソッドを 経由プロキシ機能。RMIは RPCのオブジェクト指向バージョンであるため、やや優れています。
ここから。
詳細と例については、こちらをご覧ください。
RPCは、Cに基づく古いプロトコルです。リモートプロシージャを呼び出して、ローカルコールのように見せることができます。RPCは、リモート呼び出しをサーバーに渡し、クライアントに結果を取得するという複雑さを処理します。
Java RMIも同じことを実現しますが、少し異なります。リモートオブジェクトへの参照を使用します。つまり、リモートオブジェクトへの参照を、呼び出すメソッドの名前とともに送信するということです。大規模なプログラムの場合のコードとネットワーク経由でのオブジェクトの分散により、各接続を個別に確立する代わりに、複数のクライアントがサーバーのメソッドを呼び出すことができます。
RMI
JavaはgRPC
.Netのようなものだと思います...