次の方法で共有


その他のWS-Discovery機能

場合によっては、 Web サービスのデバイス プロファイル (DPWS) と関連する仕様で実装機能が明示的に定義されていない場合があります。 たとえば、 WS-Discovery 仕様では、マルチホーム環境でのクライアントとホストの動作は定義されません。 WSDAPI が実装されると、仕様で定義されている機能を超えていくつかの検出機能が追加されました。

WSDAPI は、HTTP 経由で探索プロキシと通信するために、v1.1 CD1 WS-Discovery選択した部分も実装します。

このトピックの目的は、WSDAPI によって実装される検出機能について説明することですが、DPWS またはWS-Discovery仕様では説明されていません。

IPv6 アドレスと soap.udp URI 形式

SOAP over-UDP と WS-Discovery では、リテラル IPv6 アドレスが soap.udp URI 形式でどのように表されるかを明示的に記述しません。 RFC 2396 ("Uniform Resource Identifiers (URI): Generic Syntax") は、リテラル IPv6 アドレスが soap.udp URI 形式でサポートされていないことを示します。

わかりやすくするために、WSDAPI は soap.udp スキームで角かっこで囲まれた IPv6 アドレスを認識します。 たとえば、アドレス soap.udp://[2001:abcd:0001:0002:0003:0004:0005:0032]:3702 は WSDAPI によって認識されます。 これは、HTTP での IPv6 アドレスの処理方法に似ています。

Hello と XAddrs

WSDAPI の DPWS ホスティング オブジェクトは、メッセージ本文に XAddrs を含むWS-Discovery Hello メッセージを送信することはありません。 クライアントが XAddrs を取得する必要がある場合、クライアントは常に Hello メッセージを受信した後に Resolve メッセージを送信します。

このアプローチには 2 つの利点があります。 まず、WSDAPI 上に構築されたデバイスでは、プライベート ネットワークの IP アドレスを公開する XAddrs は公開されません。 次に、WSDAPI 上に構築されたデバイスは、クライアントからアクセスできる XAddrs のみを公開します。つまり、IPv6 アドレスは IPv4 クライアントに送信されません。

Probe または Resolve メッセージを受信すると、応答として送信される XAddr は 1 つだけです。 送信された XAddr は、要求を受信したローカル アドレスに対応します。 要求が IPv6 経由でサブネット間で受信された場合、WSDAPI は応答でグローバル IPv6 アドレスを提供します。

優先アドレス

デバイスは、 HelloProbeMatch、または ResolveMatch メッセージに複数の XAddrs を提供できます。 1 つのサービスは、異なるトランスポート アドレスを持つ複数のエンドポイントでも使用できます。 このような場合、WSDAPI は、検出された最初の使用可能なアドレスでデバイスとの通信を試みます。 アドレスは、IPv4 がインストールされているマシンの IPv4 や IPv6 がインストールされているマシン上の IPv6 など、使用可能なプロトコルからのアドレスである場合に使用できます。 さらに、アドレスがローカル サブネット上にないデバイスまたはサービスから送信された場合は、IPv4、IPv6 サイト ローカル、または IPv6 リンク ローカルの場合にのみ使用できます。

メタデータ交換での WSDL

WSDAPI 上に構築されたデバイスとサービスは、この情報を提供するためにアプリケーションによって拡張されない限り、メタデータ交換で WSDL を提供しません。 既定では、WSDL プロビジョニングはプログラミング モデルの一部ではありません。

APP_MAX_DELAY

DPWS は、 プローブ の受信と ProbeMatch の送信の間に遅延するランダム間隔であるAPP_MAX_DELAYを 5,000 ミリ秒として定義します。 Windows ファイアウォールでは、UDP のマルチキャスト要求/ユニキャスト応答モデルが 4 秒のファイアウォール ウィンドウ内でのみ機能する必要があります。 その結果、WSDAPI は、APP_MAX_DELAYによって記述された 5,000 ミリ秒のウィンドウではなく、2,500 ミリ秒以下で応答を送信します。

IANA ポートの予約

WSDAPI では、HTTP トラフィックには TCP ポート 5357、HTTPS トラフィックには TCP ポート 5358 が既定で使用されます。 これらのポートは、HTTP.sysの URL 予約を通じて低い特権プロセス用に予約されており、IANA でも予約されています。

UDP ポート共有

WSDAPI はポート共有を使用します。 ポート 3702 に送信されたユニキャスト メッセージは、すべての WSDAPI ベースのアプリケーションで適切に処理されない場合があります。 アプリケーションがポート 3702 に排他的にバインドされている場合、WSDAPI ベースのアプリケーションがそのポートを正しく使用できなくなる可能性があります。

v1.1 CD1 プロキシのWS-Discovery

WSDAPI は、WS-Discovery v1.1 CD1 マネージド モード プロトコルを実装する探索プロキシを検索して通信します。 WS-Discovery v1.1 CD1 は、プロキシとクライアントまたはデバイス間の通信のための HTTP プロトコルの明示的な説明を含む、WS-Discoveryの最初のリビジョンです。

マルチキャスト要求で使用される同時実行バージョンの数を制限するために、WSDAPI は 2005/04 名前空間で WS-Discovery Probe 要求を送信しますが、WS-Discovery v1.1 CD1 DiscoveryProxy 型を検索します。 プロキシが応答すると、WSDAPI は、WS-Discovery v1.1 CD1 で定義されているように、指定されたプロキシ エンドポイントに HTTP プローブまたは Resolve 要求を送信します。