ONC+ 開発ガイド

TI-RPC の問題

特定の RPC を実装する場合には次の注意点があります。

パラメタの引き渡し

TI-RPC では 1 つのパラメタをクライアントからサーバに渡すことができます。複数のパラメタが必要なときは、1 つの要素とみなされる 1 つの構造体に含めて渡されます。サーバからクライアントに渡される情報は、関数の戻り値として渡されます。サーバからクライアントにパラメタリストを通して情報を戻すことはできません。

結合

クライアントは、利用したいサービスの使用方法を知っていなければなりません。サーバのホスト名を知ることと、実際のサーバのプロセスに接続することが必要です。各ホストでは、rpcbind と呼ばれるサービスが RPC サービスを管理します。TI-RPC は hostsファイル、NIS+、DNS などのホストネームサービスを使用してホストの位置を確認します。

トランスポートプロトコル

トランスポートプロトコルは、クライアントとサーバとの間で呼び出しおよび返答メッセージがどのように送信されるかを指定します。TS-RPC はトランスポートプロトコルとして TCP と UDP を使用しますが、現在の TI-RPC バージョンはトランスポートに依存しません。つまり、TI-RPC は Solaris 2.x がサポートする任意のトランスポートプロトコルで動作します。

呼び出しセマンティクス

呼び出しセマンティクスは、遠隔手続きの実行に関し、特にその手続きが何回実行されたかについてクライアントが仮定することに関係があります。これはエラー条件をあつかう場合に重要です。この場合、「1 回」、「多くても 1 回」、「少なくとも 1 回」、の 3 つのセマンティクスがあります。ONC+ では「少なくとも 1 回」のセマンティクスを提供します。遠隔で呼び出される手順は一貫しています。つまり、たとえ数回にわたって呼び出されても同じ結果を返す必要があります。

データ表現

データ表現とは、プロセス間でパラメタと結果が渡されるときに使用されるフォーマットのことです。さまざまなシステムアーキテクチャ上で RPCが機能するためには、標準データ形式が必要です。TI-RPC では、標準データ形式として外部データ表現 (XDR: external Data Representation) を使用します。XDR はマシンに依存しないデータ形式と符号化のためのプロトコルです。TI-RPC では、XDR を使用することによって、各ホストのバイト順序や構造体の配置方法にわずらわされることなく、任意のデータ構造を扱うことができます。XDR の詳細については、付録 C 「XDR プロトコル仕様」および 付録 A 「XDR テクニカルノート」を参照してください。