RPC
| TCP/IP群 | |
|---|---|
| アプリケーション層 | |
|
BGP / DHCP / DNS / FTP / HTTP / IMAP / IRC / LDAP / MGCP / NNTP / NTP / POP / RIP / RPC / RTP / SIP / SMTP / SNMP / SSH / Telnet / TFTP / TLS/SSL / XMPP カテゴリ |
|
| トランスポート層 | |
|
TCP / UDP / DCCP / SCTP / RSVP / ECN カテゴリ |
|
| ネットワーク層 | |
|
IP (IPv4, IPv6) / ICMP / ICMPv6 / IGMP / IPsec カテゴリ |
|
| リンク層 | |
|
ARP/InARP / NDP / OSPF / トンネリング (L2TP) / PPP / MAC (イーサネット, IEEE 802.11, DSL, ISDN, FDDI) カテゴリ |
RPC(英: remote procedure call、リモートプロシージャコール)とは、プログラムから別のアドレス空間(通常、共有ネットワーク上の別のコンピュータ上)にあるサブルーチンや手続きを実行することを可能にする技術。遠隔手続呼出とも。その際に遠隔相互作用の詳細を明示的にコーディングする必要がない。つまり、プログラマはローカルなサブルーチン呼び出しと基本的に同じコードをリモート呼び出しについても行う。RPCを行うソフトウェアがオブジェクト指向プログラミングに基づく場合、RPC のことを リモート呼び出し(remote invocation)あるいは リモートメソッド呼び出し (remote method invocation、RMI)と呼ぶこともある(Java RMIなど)。
RPC には例えば、ONC RPC や DCE/RPC といった互いに非互換な様々な技術が存在する。
目次 |
起源と歴史 [編集]
RPC の考え方は、少なくともRFC 707が発表された1976年まで遡る。最初に RPC を商用に実用化したのはゼロックスの「Courier」であり、1981年のことであった。UNIXで最初に広く使われるようになった RPC 実装はサン・マイクロシステムズの RPC(ONC RPC)であり、NFS の基盤として使われた。ONC RPC は現在でも広く使われている。
もう一つのUNIXでの初期の実装として、アポロコンピュータの Network Computing System (NCS) がある。NCS は後に OSF の Distributed Computing Environment (DCE) で DCE/RPC の基盤として使われた。その約10年後、マイクロソフトが DCE/RPC を同社の RPC (MSRPC) の基盤として採用し、DCOM の実装に使った。同じころ(1990年代中盤)、継承機構を備えた分散オブジェクトに関する RPC パラダイムとして、パロアルト研究所の ILU と Object Management Group の CORBA が登場した。
メッセージパッシング [編集]
RPCクライアントは、実行する手続きと引数とを要求メッセージとして既知のリモートサーバに送信することで、RPCを開始する。サーバーがRPCを処理している間、クライアント側はブロックされる。サーバー上でメッセージが処理され、応答がクライアントに戻ってくると、クライアント上のプロセスは処理を続行する。
RPC プロトコルの実装によって微妙な違いをもった多くのバリエーションがあり、それらの間には互換性がない。
RPCが通常のローカル呼び出しと比べて違う点で重要なのは、予測できないネットワーク上の問題で失敗することがあるという点である。またそのような場合、手続きが実際に実行されたかどうかをクライアントが知ることができないことがある。そういったケースでは、二重に手続きを実行しても影響のない場合は容易に対処できるが、そうでなければ適切な対処は困難である。そのため、注意深く記述された低レベルなサブシステムの制限下で呼び出しコードを実行するという方法がよくとられる。
標準コンタクト機構 [編集]
各種クライアントからサーバへのアクセスを可能とするため、いくつかの標準 RPC システムが開発されてきた。それらの多くはインタフェース記述言語 (IDL) を使って各種プラットフォーム間の RPC を可能としている。
IDL ファイルはクライアントとサーバ間のインタフェースのためのコードを生成するのに使われる。最も一般的なツールとしては RPCGEN がある。
RPC に類似する概念 [編集]
- Java の Java RMI API は、標準的 UNIX RPC とほぼ同等の機能を提供する。
- XML-RPC は、呼び出しをXMLで符号化し、HTTP を通信プロトコルに使用する RPC プロトコルである。
- マイクロソフトの .NET Remoting は、Windows プラットフォーム上に実装された分散システムでの RPC 機能を提供するものである。
関連項目 [編集]
- SOAP
- HTTP
- ODBC
- Webサービス
- Applet
- Servlet
- Samba
- WebDAV
- ピア・ツー・ピア
- JRES - Java Remote Execution Service is a RPC protocol that uses SSL style encode mechanism to encode its calls and pure HTTP as a transport mechanism.
参考文献 [編集]
- RFC 1057 - Specifies version 1 of ONC RPC
- RFC 1831 - Specifies version 2 of ONC RPC
- Remote Procedure Calls (RPC) A tutorial on ONC RPC by Dr Dave Marshall of Cardiff University
この記述は GNU Free Documentation License のもとに公開されているコンピュータ用語辞典『 Free On-line Dictionary of Computing (FOLDOC) 』に基づいています。