共用方式為


DPWS 規格合規性

本主題描述 WSDAPI 如何在 web Services (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) 的 UDP 封包。 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 信封

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

DPWS 3.5 WS-Addressing

R0004 反映 WSDAPI 中裝置 API 的建議用法,而且 WSDAPI 中的用戶端 API 支援。 由於這是建議,因此 WSDAPI 會允許用戶端和裝置使用其裝置端點 urn:uuid URI 以外的 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 支援除了LDAP以外,WS-Discovery 中定義的所有範圍比對規則。 WSDAPI 也提供可延伸的模型來定義自定義範圍比對規則,因此符合 R1019。 裝載 API 也會一律在每個 R1020 的探索中提供 wsdp:Device 類型,但用戶端 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 傳輸 功能的子集。 裝載 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中所定義的常數。