RPC

出典: フリー百科事典『ウィキペディア(Wikipedia)』

RPCRemote Procedure Call、リモートプロシージャコール)とは、プログラムから別のアドレス空間(通常、共有ネットワーク上の別のコンピュータ上)にあるサブルーチン手続きを実行することを可能にする技術。遠隔手続呼出とも。その際に遠隔相互作用の詳細を明示的にコーディングする必要がない。つまり、プログラマはローカルなサブルーチン呼び出しと基本的に同じコードをリモート呼び出しについても行う。RPCを行うソフトウェアがオブジェクト指向プログラミングに基づく場合、RPC のことを Remote Invocation あるいは Remote Method Invocation と呼ぶこともある(Java RMIなど)。

RPC には例えば、ONC RPCDCE/RPC といった互いに非互換な様々な技術が存在する。

目次

[編集] 起源と歴史

RPC の考え方は1976年に RFC 707 で記述されており、起源はそれより遡る。最初に RPC を商用に実用化したのはゼロックスの "Courier" であり、1981年のことであった。UNIXで最初に広く使われるようになった RPC 実装はサン・マイクロシステムズの RPC(ONC RPC)であり、NFS の基盤として使われた。ONC RPC は現在でも広く使われている。

もう1つのUNIXでの初期の実装として、アポロコンピュータの Network Computing System (NCS) がある。NCS は後に OSFDistributed Computing Environment (DCE) で DCE/RPC の基盤として使われた。その約10年後、マイクロソフトが DCE/RPC を同社の RPC (MSRPC) の基盤として採用し、DCOM の実装に使った。同じころ(1990年代中盤)、継承機構を備えた分散オブジェクトに関する RPC パラダイムとして、パロアルト研究所ILUObject Management GroupCORBA が登場した。

[編集] メッセージパッシング

RPC は、分散コンピューティングクライアントサーバモデルを実装するための容易で一般的なパラダイムである。RPC はクライアントが要求メッセージを既知のリモートサーバに送信することで開始され、その要求メッセージで実行して欲しい手続きとその引数を指定する。応答がクライアントに戻ってくると、そのプロセスは処理を続行する。(非互換な)RPC プロトコルの実装によって様々なバリエーションと微妙な違いがある。しかし、サーバが RPC を処理している間、クライアント(のスレッド)がブロックされる点は共通する。

[編集] 標準コンタクト機構

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

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

[編集] RPC に類似する概念

  • JavaJava RMI (Java Remote Method Invocation) API は、標準的 UNIX RPC とほぼ同等の機能を提供する。
  • XML-RPC は、呼び出しをXMLで符号化し、HTTP を通信プロトコルに使用する RPC プロトコルである。
  • マイクロソフトの .NET Remoting は、Windows プラットフォーム上に実装された分散システムでの RPC 機能を提供するものである。

[編集] NT上のサービス

Windows NTでは、svchost.exeを使用する。 このサービスを強制終了させると、1分で強制的に再起動される。ただし、設定で再起動を無効にした場合や猶予時間を変更した場合はこの限りではない。

[編集] 不信頼性

  • 通信ネットワークやコンピュータの故障から、要求や応答の送受信不良が生じた場合、この分散処理の信頼性・正確性は低下する。

[編集] 関連項目

[編集] 参考文献

この記述は GNU Free Documentation License のもとに公開されているコンピュータ用語辞典『 Free On-line Dictionary of Computing (FOLDOC) 』に基づいています。