エンドポイント アドレス

エンドポイント アドレスは、ネットワーク上のサービスのアドレスを表します。 チャネルを開くときは、WsOpenChannel 関数を呼び出して、通信するサービスのエンドポイント アドレスを指定し、開くチャネルを指定する必要があります。

エンドポイント アドレスは、次で構成されます。

  • URL
  • ヘッダーのセット (省略可能)
  • 一連の拡張機能 (省略可能)
  • サービス のセキュリティ ID を表す省略可能な ID。

メッセージがアドレス指定されると、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 列挙で指定されているアドレス指定ヘッダーに使用される仕様のバージョンを把握している必要があります。