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