實作多宿主 WSD 裝置
WS-Discovery 和 Web Services 的 裝置設定檔 (DPWS) 不會描述多宿主裝置的實作。 本主題描述 WSDAPI 中的多宿主裝置支援,並提供對客戶端和裝置開發人員的實作建議。 在本主題中,假設探索訊息會透過 IPv4 和 IPv6 傳送,且具有相同訊息識別碼和應用程式排序資訊。
在多宿主環境中探索
如在 Hello 和 XAddrs 章節中所述,於 附加 WS-Discovery 功能中,WSDAPI 絕不會在 Hello 訊息中提供 XAddrs。 這表示相同的 Hello 訊息可以在具有相同訊息識別碼和應用程式排序資訊的所有網路介面上傳送。 如此一來,當用戶端和裝置共用多個子網時,客戶端衝突偵測會更容易捨棄來自相同裝置的多個 Hello 訊息。
因為 XAddrs 不會在 Hello 訊息中傳送,用戶端實作必須傳送 Resolve 訊息,以取得相關的裝置位址。 [解析] 應該在具有相同訊息標識碼的所有用戶端介面上傳送,而裝置應該視需要篩選重複的訊息。 針對解析訊息使用相同的訊息標識碼,可讓裝置在必要時挑選與用戶端通訊的慣用介面。
當傳送 ResolveMatch 訊息時,裝置應提供與該訊息的單播網路介面相關的 XAddrs。 這種做法有助於避免多個用戶端連線嘗試和複雜的重試邏輯。
多宿主環境中的元數據交換
在多宿主環境中實作元數據交換比實作探索更困難,因為元數據版本設定。 如果用戶端透過多個介面要求元數據,則用戶端可以透過不同的介面接收多個 GetResponse 訊息。 這些 GetResponse 訊息可以包含具有相同元數據版本的不同 關聯性 元數據區段。 這會減少元數據版本號碼的值。
有一種替代方法,其中會傳送一則包含服務所有位址的 GetResponse 訊息以做回應。 此方法的缺點是可能會披露私人資訊,例如間接存取網路的拓撲。
在 Windows Vista 上,WSDAPI 提供的元數據只包含對接收元數據要求之介面有效的位址。