Stub (distributed computing) とは

分散コンピューティングのスタブは、リモートプロシージャコール(RPC)中にクライアントとサーバーの間で渡されるパラメータを変換するコードです。
RPCの主な考え方は、ローカルコンピュータ(クライアント)が別のコンピュータ(サーバー)上のプロシージャをリモートで呼び出せるようにすることです。クライアントとサーバは異なるアドレス空間を使用するため、関数(プロシージャ)コールで使用されるパラメータを変換する必要があります。そうでなければ、これらのパラメータの値は使用できません。他のコンピュータ。単純なパラメータ(例えば、整数のビッグエンディアン対リトルエンディアン)であっても、クライアントとサーバは異なるデータ表現を使用することもできる。スタブはパラメータの変換を実行するので、リモートプロシージャコールはリモートコンピュータのローカル関数呼び出しのように見えます。
スタブライブラリは、クライアント側とサーバー側の両方にインストールする必要があります。クライアント・スタブは、関数呼び出しで使用されるパラメーターの変換(マーシャル)と、関数の実行後にサーバーから渡された結果のデコンヴァージョンを担当します。サーバ側のスタブであるサーバスケルトンは、クライアントが渡したパラメータの逆変換と、関数の実行後の結果の変換を行います。
スタブは、次の2つの方法のいずれかで生成できます。
 手動:この方法では、RPC実装者は、ユーザーが独自のスタブを構築できる一連の変換関数を提供します。このメソッドは実装が簡単で、非常に複雑なパラメータ型を処理できます。自動的に:これは、スタブ生成のためにより一般的に使用されるメソッドです。クライアントとサーバーの間のインターフェイスを定義するために、インターフェイス記述言語(IDL)を使用します。たとえば、インタフェース定義には、各引数が入力か出力かのいずれかであるかどうかを示す情報があります。入力引数のみをクライアントからサーバーにコピーする必要があり、出力要素のみをサーバーからクライアントにコピーする必要があります。
あるインタフェースにプロシージャを実装するサーバプログラムは、そのインタフェースをエクスポートすると言われ、そのインタフェースからプロシージャを呼び出すクライアントプログラムは、そのインタフェースをインポートすると言われています。分散アプリケーションを書くとき、プログラマーはまずIDLを使用してインターフェース定義を書き込み、プログラマーはインターフェースをインポートするクライアントプログラムとインターフェースをエクスポートするサーバープログラムを書くことができます。インタフェース定義は、IDLコンパイラを使用して処理され、既存のコンパイラに変更を加えることなく、クライアントおよびサーバプログラムと結合できるコンポーネントを生成します。特に、インタフェース内の各プロシージャのインタフェースから、コンパイラは、各スタブプロシージャ内の適切なマーシャリングとアンマーシャリング操作と、インタフェース定義のデータ型をサポートするヘッダファイルを生成します。ヘッダファイルは、クライアントプログラムとサーバプログラムの両方のソースファイルに含まれ、クライアントスタブプロシージャはコンパイルされ、クライアントプログラムとリンクされ、サーバスタブプロシージャはコンパイルされ、サーバプログラムとリンクされる。 IDLコンパイラは、異なる言語で使用するためのインタフェース定義を処理し、異なる言語で書かれたクライアントとサーバがリモートプロシージャコールを使用して通信できるように設計できます。セマンティクスの透明性の目標を達成するために、デザイナーは実際のRPCインプリメンテーションをプログラムから基本RPCシステムへのインターフェースから隠すスタブの概念を使用して、RPCをLPcのように見せました。