Skip to content
oraccha edited this page Jan 14, 2013 · 1 revision

Remote Procedure Call

「リモート」はネットワーク接続されたリモート計算機のことでもあり,同一計算機内の別アドレス空間のプロセスのことでもある. つまり,プロセスの壁越え技術の一つ.

  • ONC RPC(Sun) . NFSNIS のベースになった機構.普通 RPC と言ったらこのこと(RFC:1057).
    • 基本的にポインタは受け渡しできない → マーシャリングする. . 分散共有メモリだとポインタを扱えるように拡張されてるものもある.
    • マーシャリングにおける機種非依存性(intサイズ,文字コード,エンディアン などの違い)を保証するために,XDR と呼ばれる表現形式が利用されている.
    • 引数,戻り値とも一つだけ.複数の引数が必要な場合は構造体を使う必要がある.
    • 同期通信.
  • DCE RPC(OSF) . 非同期通信のサポート,XDRの拡張(エンディアン変換の最適化)など, いろいろ拡張されているらしいが,DCE 自体今も生き残っているのかな?

RPC はトランスポート層に依存しないが,通常は UDP/IP 上で実装される.と書いたけど,NFS over TCP も可能だし,WAN になると事実上選択肢は TCP に限られてしまうよな.

  • 分散OS V には VMTP (Versatile Message Transaction Protocol, RFC:1045) ってプロトコルがあったらしい.
  • Amoeba にはRPCやグループ通信をサポートするための FLIP(Fast Local Internet Protocol) ってのがあった.

RPC/XDR だと Unix/C にべったりだし,Java RMI は Java にべったり. ということで,言語,プラットホーム独立で,スケーラブルな機構を作りたいと言うことで,CORBA などが利用される.

もっと上のレイヤ,例えば Web サービスなど,over HTTP でやるのであれば,SOAP などの XML-RPC がある.


関連文書

  • [http://www.hlla.is.tsukuba.ac.jp/~yas/coins/dsys-1998/1999-01-19/sunrpc.html SunRPCプログラミング] (筑波大)
  • [http://www.advogato.org/article/232.html Which RPC protocols work?] (Advogato.org)
Clone this wiki locally