次の方法で共有


マルチホーム WSD デバイスの実装

WS-DiscoveryDevices Profile for Web Services (DPWS) では、マルチホーム デバイスの実装は記述されていません。 このトピックでは、WSDAPI でのマルチホーム デバイスのサポートについて説明し、クライアントとデバイスの開発者に実装に関する推奨事項を示します。 このトピックでは、検出メッセージは、同じメッセージ ID とアプリケーションシーケンス情報を使用して IPv4 と IPv6 の両方 (使用可能な場合) で送信されることを前提としています。

マルチホーム環境での検出

「追加のWS-Discovery機能」の「HelloXAddrs」セクションで説明したように、WSDAPI は Hello メッセージに XAddrs を提供しません。 つまり、同じ Hello メッセージは、同じメッセージ ID とアプリケーションシーケンス情報を持つすべてのネットワーク インターフェイスで送信できます。 これにより、クライアントとデバイスが複数のサブネットを共有している場合に、クライアントの競合検出で同じデバイスから複数の Hello メッセージを破棄しやすくなります。

XAddrsHello メッセージで送信されないため、クライアント実装は、関連するデバイス アドレスを取得するために Resolve メッセージを送信する必要があります。 Resolve は、同じメッセージ ID を持つすべてのクライアント インターフェイスで送信する必要があり、デバイスは必要に応じて重複するメッセージをフィルター処理する必要があります。 Resolve メッセージに同じメッセージ ID を使用すると、デバイスは必要に応じてクライアントと通信するための優先インターフェイスを選択できます。

ResolveMatch メッセージを送信する場合、デバイスはメッセージをユニキャストするネットワーク インターフェイスに関連する XAddrs を提供する必要があります。 この方法は、複数のクライアント接続試行と複雑な再試行ロジックを回避するのに役立ちます。

マルチホーム環境でのメタデータ交換

マルチホーム環境でのメタデータ交換の実装は、メタデータのバージョン管理のために検出を実装するよりも困難です。 クライアントが複数のインターフェイスを介してメタデータを要求する場合、クライアントは異なるインターフェイス経由で複数の GetResponse メッセージを受信できます。 これらの GetResponse メッセージには、同じメタデータ バージョンの異なる リレーションシップ メタデータ セクションを含めることができます。 これにより、メタデータのバージョン番号の値が減ります。

別の方法があります。この方法では、1 つの GetResponse メッセージが、サービスのすべてのアドレスに応答して送信されます。 この方法の欠点は、間接的にアクセス可能なネットワークのトポロジなどの個人情報が開示されることである。

Windows Vista では、WSDAPI によって提供されるメタデータには、メタデータ要求を受信したインターフェイスに対して有効なアドレスのみが含まれます。