エンドポイント アドレス
エンドポイント アドレスは、ネットワーク上のサービスのアドレスを表します。 チャネルを開くときに、WsOpenChannel 関数を呼び出すことによって、通信するサービスのエンドポイント アドレスと、開くチャネルを指定する必要があります。
エンドポイント アドレスは次で構成されます。
メッセージがアドレス指定されると、URL はメッセージの "宛先" ヘッダーになります。 エンドポイント アドレスの一部であるヘッダーもメッセージに追加されます。
チャネルは、WsOpenChannelに渡された WS_ENDPOINT_ADDRESS 構造を使用して、送信されたすべてのメッセージを自動的にアドレス指定します。 WsAddressMessage 関数を使用して、この既定の動作をオーバーライドすることもできます。
WS_ENDPOINT_ADDRESS がパラメーターとして渡されると、WsOpenChannel と wsOpenServiceProxy関数はメモリ内に WS_ENDPOINT_ADDRESS パラメーターのコピーを作成し、そのサイズは 65536 バイトに制限されます。 wsAddressMessageには、WS_ENDPOINT_ADDRESS パラメーターのコピーを作成する必要がないため、この制限はありません。
WS_ENDPOINT_ADDRESS の 拡張機能 フィールドで指定された拡張機能は、メッセージのアドレス指定には使用されませんが、代わりに、サービスに関する追加情報 (メタデータなど) を提供するために使用できる拡張メカニズムです。 共通拡張機能は、WsReadEndpointAddressExtension 関数を使用して読み取ることができます。
エンドポイント アドレスの省略可能な ID フィールドには、サービスが実行されているコンピューターの DNS 名や、サービスが実行されている Windows アカウントの UPN などを含めることができます。 ID フィールドはメッセージのアドレス指定には使用されませんが、サービスのセキュリティ トークンの取得 (ターゲット UPN への Kerberos チケットの取得など) や、サービス応答の ID (SSL 中に返されるサービス証明書の名前チェックに使用される DNS ID など) を確認するために使用できます。
エンドポイント アドレスは、WS_TYPEからの WS_ENDPOINT_ADDRESS_TYPE 列挙値 シリアル化 を使用して読み書きできます。 エンドポイント アドレスをシリアル化するには、WS_ADDRESSING_VERSION 列挙型で指定されているアドレス指定ヘッダーに使用される仕様のバージョンを知っている必要があります。