シリアル化サービス
Microsoft RPC では、データのエンコードとデコードの 2 つの方法がサポートされています。これらはまとめてデータ のシリアル化と呼ばれます。 シリアル化とは、データが、制御するバッファーにマーシャリングされ、バッファーからマーシャリング解除されることを意味します。 これは、スタブと RPC ランタイム ライブラリがマーシャリング バッファーを完全に制御し、プロセスが透過的である RPC の従来の使用方法とは異なります。 永続的なメディアや暗号化などのストレージには、バッファーを使用できます。 データをエンコードすると、RPC スタブによってデータがバッファーにマーシャリングされ、バッファーが渡されます。 データをデコードすると、マーシャリング バッファーにデータが含まれており、データはバッファーからメモリにマーシャリングされません。 プロシージャまたは型ベースでシリアル化できます。
Note
pickling という用語は、シリアル化を記述するために開発者の間で一般的に使用されます。 実際、Windows SDK サンプルには、RPC シリアル化サンプル プログラムを保持する pickle というディレクトリが含まれています。
シリアル化では、他の目的でデータのマーシャリングとマーシャリング解除を行うために RPC メカニズムを利用します。 たとえば、複数の I/O 操作を使用してオブジェクトのグループをストリームにシリアル化する代わりに、アプリケーションでは、異なる型の複数のオブジェクトをバッファーにシリアル化し、バッファー全体を 1 回の操作で書き込むことで、パフォーマンスを最適化できます。 シリアル化ハンドルを操作する関数は、使用しているシリアル化の種類に依存しません。
別の例として、Microsoft Windows Sockets (Winsock) などの RPC 以外のネットワーク トランスポート メカニズムを使用する必要がある場合です。 RPC シリアル化を使用すると、プログラムはデータをバッファーにマーシャリングし、Winsock を使用してこのデータを送信する関数を呼び出すことができます。 アプリケーションがデータを受信すると、RPC シリアル化メカニズムを使用して、Winsock ルーチンによって入力されたバッファーからデータのマーシャリングを解除できます。 これにより、RPC スタイルのアプリケーションの多くの利点が得られ、同時に、RPC 以外のトランスポート メカニズムを使用できます。
また、ネットワーク通信とは無関係の目的でシリアル化を使用することもできます。 たとえば、RPC エンコード関数を使用してデータをバッファーにマーシャリングしたら、別のアプリケーションで使用するためにファイルに格納できます。 暗号化することもできます。 これを使用して、ハードウェアとオペレーティング システムに依存しないデータ表現をデータベースに格納することもできます。
次のトピックでは、Microsoft RPC がサポートするシリアル化サービスについて説明します。