DPWS 規格合規性

本主題描述 WSDAPI 如何在 Web 服務的裝置設定檔 中實作選擇性功能, (DPWS) 規格。 它也描述 WSDAPI 實作中省略了哪些 DPWS 功能。

DPWS 規格提供與裝置訊息的一致方式。 它也會新增特定限制和建議,以簡化在內嵌硬體上支援 Web 服務的程式。

DPWS 規格會使用指定實作建議或限制中的 MAY 或 SHOULD 詞彙來描述選擇性功能。 省略的功能可能是 DPWS 規格中未實作 WSDAPI 的必要功能,或 WSDAPI 在 DPWS 規格中指定的方法中實作的 WSDAPI 功能。

本主題遵循 DPWS 一節的版面配置。 每個章節說明 WSDAPI 實作如何處理特定限制、需求和選擇性功能。 本主題最適合與 DPWS 規格一起閱讀。

DPWS 3.0 傳訊

DPWS 3.1 URI 格式

限制 R0025 和 R0027 會將 URI 限制為MAX_URI_SIZE八位。 WSDAPI 會依照指定強制執行這兩項限制。

DPWS 3.2 UDP 傳訊

建議 R0029 建議不要傳送 UDP 封包大於最大傳輸單位 (MTU) 。 WSDAPI 不會實作此建議,而且允許實作傳送和接收大於 MTU 的探索訊息。

DPWS 3.3 HTTP 傳訊

R0001 要求服務支援區塊傳輸。 WSDAPI 接受要求訊息中的區塊化資料,並將在要求訊息中傳送區塊化資料。

R0012 和 R0013 描述 SOAP HTTP 系結的必要部分。 針對 R0012,WSDAPI 會實作 SOAP HTTP 系結,但在 WSDAPI 完成傳送 HTTP 要求之前,將不會開始讀取 HTTP 回應。 WSDAPI 會在 R0013 中實作必要的訊息交換模式、在 R0014 中實作選擇性回應 SOAP 節點,而且不會在 R0015 中實作選擇性的 Web 方法功能。 WSDAPI 也支援 R0030 和 R0017 的需求。

DPWS 3.4 SOAP Envelope

WSDAPI 支援 R0034,預設會強制執行 R0003 和 R0026。 更具體來說,根據 R0003 和 R0026,如果 WSDAPI 收到大於透過 HTTP MAX_ENVELOPE_SIZE的 SOAP 信封,則會遭到拒絕且連線已關閉。

DPWS 3.5 WS-Addressing

R0004 反映 WSDAPI 中裝置 API 的建議用法,且由 WSDAPI 中的用戶端 API 支援。 由於這是建議,因此 WSDAPI 可讓用戶端和裝置在其裝置端點上使用 URI 以外的 urn:uuid URI,以確保最大的相容性。 由於 WSDAPI 中的裝置 API 不會在初始化之間保存狀態,因此使用 WSDAPI 中的裝置 API 的應用程式開發人員,可確保正確支援 R0005 和 R0006。 WSDAPI 中的用戶端 API 會假設裝置身分識別是唯一且保存的,而且建置在 WSDAPI (中的用戶端 API 的功能,例如 PnP-X) 將需要這項功能,才能在裝置重新開機時正確辨識裝置。

R0007 建議不要在端點參考中使用參考屬性。 WSDAPI 仍會辨識並接受具有參考屬性的端點,開發人員可以選擇使用它們,但根據預設,WSDAPI 不會在所建立的端點中填入這些端點。 同樣地,使用 R0042 時,當 WSDAPI 建立服務端點時,它會使用 HTTP 或 HTTPS 傳輸位址,但不需要裝置在其服務端點中使用 HTTP 或 HTTPS 傳輸位址。 嘗試與不使用 HTTP 或 HTTPS 的服務通訊時,用戶端的行為未定義。

在錯誤上,R0031 會限制回復端點,並描述如果錯誤不是匿名時要傳送的錯誤。 WSDAPI 會強制回復端點在傳送訊息時使用正確的值,如果 WSDAPI 收到具有不正確回復端點的要求訊息,則會正確發生錯誤。 R0041 提供當回復端點無效時,卸載錯誤的選項。 WSDAPI 不會卸載錯誤,而是將錯誤傳回要求通道,並定址至匿名端點,作為與用戶端通訊的「最佳努力」。

最後,SOAP 標頭 R0019 和 R0040 有兩項限制,其中 WSDAPI 符合並強制執行已接收的訊息。

DPWS 3.6 附件

WSDAPI 支援附件,且符合 R0022。 WSDAPI 也符合 R0037。 傳送附件時,WSDAPI 一律會將所有 MIME 元件的內容傳輸編碼設定為「二進位」。 不過,WSDAPI 不會強制執行 R0036。 未定義未將內容傳輸編碼設定為 「二進位」的 MIME 元件時,WSDAPI 的行為。

DPWS 也會定義 MIME 部分排序子句。 針對 R0038,WSDAPI 會強制執行部分排序,如果 SOAP 信封不是第一個 MIME 元件,則會拒絕 MIME 訊息。 針對 R0039,WSDAPI 一律會將 SOAP 信封傳送為第一個 MIME 元件。

DPWS 4.0 探索

R1013 和 R1001 區分裝置探索和服務探索。 WSDAPI 符合 R1013。 裝載實作符合 R1001,但 WSDAPI 不會在用戶端上強制執行此建議。

DPWS 也提供類型和範圍比對規則的指引。 WSDAPI 支援 WS-Discovery 中定義的所有範圍比對規則,但 LDAP 除外。 WSDAPI 也提供可延伸模型來定義自訂範圍比對規則,因此符合 R1019。 裝載 API 也會一律提供 wsdp:Device 每個 R1020 探索中的類型,但用戶端 API 不需要存在。 其他建置於 WSDAPI 上的應用程式,例如 PnP-X,在探索中確實需要 wsdp:Device 類型。

為了方便探索和系結,WSDAPI 支援 R1009 和 R1016。 根據 R1018,WSDAPI 會忽略未傳送至匿名位址的多播 UDP。 R1015、R1021 和 R1022 定義探查訊息的 HTTP 系結,WSDAPI 支援如下所述。

DPWS 5.0 描述

WSDAPI 會在用戶端上強制執行 R2044。 在主控端,WSDAPI 只會在 SOAP 信封主體中提供 wsx:Metadata 元素。 R2045 可讓裝置支援 WS-Transfer 功能的子集。 裝載 API 一律會產生 wsa:ActionNotSupported 錯誤。

DPWS 5.1 特性

DPWS 描述裝置的基本特性。 除了本主題中所述的限制之外,還會針對特定字串和 URI 定義長度限制。 WSDAPI 會在傳送訊息之前或剖析其內容之後,強制執行此 DPWS 第 5.1 節中的長度限制。

DPWS 也會描述中繼資料版本的必要中繼資料區段和迴圈。 用戶端實作會強制執行 ThisModel 和 ThisDevice 中繼資料的存在。 裝載實作也會正確管理中繼資料版本,並一律提供這些區段,符合 R2038、R2012、R2001、R2039、R2014 和 R2002。

DPWS 5.2 裝載

本節說明服務和關聯性中繼資料的階層。 WSDAPI 不會強制執行 ServiceId 的唯一性,如用戶端或裝置端的本節所述。

WSDAPI 確實符合 R2040,而且如果沒有任何託管服務,裝載實作可能會傳送沒有關聯性區段的中繼資料回應。 用戶端實作正確接受中繼資料回應。

R2029 允許中繼資料回應中的多個關聯性區段,WSDAPI 會正確接受。 R2030 和 R2042 描述中繼資料版本的管理,該版本會在裝載 API 中正確實作。

DPWS 5.3 WSDL

如果服務提供 Web 服務描述語言 (WSDL) 資料,用戶端實作可以取得服務定義,並即時操作服務。 這是由晚期系結用戶端使用。 WSDAPI 用戶端實作會接受從服務提供的 WSDL,但用戶端不會驗證它,而且用戶端不提供晚期繫結程式設計模型。 裝載實作可用來提供 WSDL,但主機不需要這麼做,因為服務等級中繼資料不是由主機本身管理。

DPWS 5.4 WS-Policy

DPWS 描述要用於裝置的原則判斷提示。 由於 WSDAPI 未提供且不會解譯 WSDL,因此無法辨識並強制執行內嵌在 WSDL 資料中的原則。

DPWS 6.0 事件

DPWS 6.1 訂閱

DPWS 需要支援推送傳遞。 WSDAPI 會在服務端實作推送傳遞,因此符合 R3009 和 R3010,而且只會接受用戶端上的推送傳遞模式。 如果 R3017 和 R3018 無法辨識 NotifyToEndTo 位址,則需要來自服務的特定錯誤。 WSDAPI 不會事先驗證這些位址,而且不會產生這些錯誤。 不過,用戶端實作會正確辨識這些錯誤。 同樣地,R3019 是選擇性的,WSDAPI 不會實作這項建議,但用戶端實作會正確辨識 SubscriptionEnd 訊息,並通知應用程式傳遞失敗。

DPWS 6.1.1 篩選

WSDAPI 符合 R3008 並實作 Action 篩選。 符合 R3011 和 R3012 的規範,WSDAPI 將不會在所述的條件中產生錯誤。 如果 WSDAPI 無法辨識要求篩選的動作,WSDAPI 也會實作 R3020 所述的錯誤。

DPWS 6.2 訂閱持續時間和續約

WSDAPI 符合 R3005、R3006 和 R3016。 WSDAPI 一律會使用 xs:duration ,但如果提供,則會接受 xs:dateTime ,因此不會在 R3013 中發出選擇性錯誤。 WSDAPI 支援 GetStatus ,且不會針對每個 R3015 發出 wsa:ActionNotSupported 錯誤。 如果服務回應 GetStatus 要求,WSDAPI 會接受 wsa:ActionNotSupported 錯誤。

DPWS 7.0 安全性

DPWS 描述裝置的建議安全性模型。 WSDAPI 不會如所述實作這些建議,也不會如本節所述強制執行限制。

DPWS 附錄 I

DPWS 會修改其他規格中的全域常數,以符合裝置。 WSDAPI 會使用本節中的常數,並使用這些常數覆寫 WS-Discovery 實作中的預設常數。 使用 WSDAPI 進行WS-Discovery的應用程式將會系結至 DPWS 中定義的常數,而不是 WS-Discovery中定義的常數。