: remote procedure callRPC : remote invocation  : remote method invocation: RMIJava RMI

ONC RPCDCE/RPC

起源と歴史

編集

 (RPC) RFC 7071976RPCCourier1981UNIX使RPCRPC (ONC RPC) NFS使ONC RPC使

UNIXNetwork Computing System (NCS) NCSOSFDistributed Computing Environment (DCE) DCE/RPC使10DCE/RPCRPC (MSRPC) DCOM使1990RPCILUObject Management GroupCORBA

メッセージパッシング

編集

RPCクライアントは、実行する手続きと引数とを要求メッセージとして既知のリモートサーバに送信することで、RPCを開始する。同期型のRPCでは、サーバーがRPCを処理している間、クライアント側は応答があるまで待機する(呼び出しはブロックされる)。サーバー上でメッセージが処理され、応答がクライアントに戻ってくると、クライアント上のプロセスは処理を続行する。非同期型のRPCでは、クライアント側からの呼び出し後、クライアントは応答を待たず、次の処理を続行できる。サーバーからの応答はコールバックによって通知される。サーバーあるいはクライアントが低速の場合や、大量のデータを転送する必要がある場合などに、同期RPCでは制限および問題があるが、非同期RPCではそれらを解決することができる[1]

RPCプロトコルの実装によって微妙な違いをもった多くのバリエーションがあり、それらの間には互換性がない。

RPCが通常のローカル呼び出しと比べて違う点で重要なのは、予測できないネットワーク上の問題で失敗することがあるという点である。またそのような場合、手続きが実際に実行されたかどうかをクライアントが知ることができないことがある。そういったケースでは、二重に手続きを実行しても影響のない場合は容易に対処できるが、そうでなければ適切な対処は困難である。そのため、注意深く記述された低レベルなサブシステムの制限下で呼び出しコードを実行するという方法がよくとられる。各種操作にタイムアウト時間を設け、タイムアウト時間内に応答(処理)がなされなかった場合は例外をスローする方式になっているAPIもある[2]

標準コンタクト機構

編集

各種クライアントからサーバへのアクセスを可能とするため、いくつかの標準RPCシステムが開発されてきた。それらの多くはインタフェース記述言語 (IDL) を使って各種プラットフォーム間のRPCを可能としている。

IDLファイルはクライアントとサーバ間のインタフェースのためのコードを生成するのに使われる。最も一般的なツールとしてはRPCGENがある。

遠隔手続き呼出しの各種技術および規格

編集

JavaJava RMI APIUNIX RPC

XML-RPCXMLHTTP使RPC

DCOMCOMRPC.NETRPC

.NET RemotingWindowsRPC

WCF.NET RemotingRPC.NET Framework 3.0.NET Core

JSON-RPCJSON2000RPC

GooglegRPCProtocol BuffersHTTP/22010WebRPC

脚注

編集

関連項目

編集

参考文献

編集

この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。