完全にバインドされたハンドルと部分的にバインドされたハンドル
動的エンドポイントを使用すると、ランタイム ライブラリは必要に応じてエンドポイント情報を取得します。 ランタイム ライブラリは、 完全にバインドされたハンドル (エンドポイント情報を含むハンドル) と 部分的にバインドされたハンドル (エンドポイント情報を含まないハンドル) を区別します。
クライアントランタイムライブラリは、クライアントがサーバーにバインドする前に、部分的にバインドされたハンドルを完全にバインドされたハンドルに変換する必要があります。 クライアント ランタイム ライブラリは、次に示すようにエンドポイント情報を取得することで、クライアント アプリケーションの部分的にバインドされたハンドルの変換を試みます。
- クライアントのインターフェイス仕様から
- サーバーで実行されているエンドポイント マッピング サービスから
インターフェイス仕様でエンドポイント情報が使用できないときに、サーバーのエンドポイント マッパーにサーバー エンドポイントに関する情報がない場合に、クライアントが部分的にバインドされたハンドルを使用しようとすると、クライアントはリモート プロシージャ コールを行うのに十分な情報を持たないため、その呼び出しは失敗します。 これを防ぐには、分散アプリケーションで部分的にバインドされたハンドルを使用する場合に、エンドポイント マッパーにエンドポイントを登録する必要があります。 エンドポイント マッパーの詳細については、「 動的エンドポイントの指定」を参照してください。
リモート プロシージャ コールが失敗した場合、クライアント アプリケーションは RpcBindingReset を呼び出して、古いエンドポイント情報を削除できます。 クライアントがリモート プロシージャを呼び出そうとすると、クライアントランタイム ライブラリは再び、完全にバインドされたハンドルを部分的にバインドされたハンドルに変換しようとします。 これは、サーバーが別の動的エンドポイントを使用して停止および再起動された場合に便利です。