WSDL

介面定義語言

WSDL(Web Services Description Language),網路服務描述語言,是一個用來描述Web服務和說明如何與Web服務通信的XML(標準通用標記語言的子集)語言。為用戶提供詳細的介面說明書。WSDL 文檔可以分為兩部分。

簡介


WSDL(Web服務描述語言,Web Services Description Language)是為描述Web服務發布的XML格式。W3C組織(World Wide Web Consortium)沒有批准1.1版的WSDL,當前的WSDL版本是2.0,是W3C的推薦標準(recommendation)(一種官方標準),並將被W3C組織批准為正式標準。
在諸多技術文獻中通常將Web服務描述語言簡寫為WSDL,讀音通常發為:"wiz-dəl"。
WSDL描述Web服務的公共介面。這是一個基於XML的關於如何與Web服務通訊和使用的服務描述;也就是描述與目錄中列出的Web服務進行交互時需要綁定的協議和信息格式。通常採用抽象語言描述該服務支持的操作和信息,使用的時候再將實際的網路協議和信息格式綁定給該服務。

組成


WSDL 文檔可以分為兩部分。頂部分由抽象定義組成,而底部分則由具體描述組成。

基本概念


WSDL是Web Service的描述語言,是一種介面定義語言,用於描述Web Service的介面信息等。

歷史


在 2001 年 3 月,WSDL 1.1 被 IBM、微軟作為一個W3C紀錄(W3C note)提交到有關XML協議的 W3C XML 活動,用於描述網路服務。(W3C 紀錄僅供討論。一項 W3C 紀錄的發布並不代表它已被 W3C 或 W3C 團隊亦或任何 W3C 成員認可。)在 2002 年 7 月,W3C 發布了第一個 WSDL 1.2 工作草案。

元素


WSDL 元素
基於XML語法描述了與服務進行交互的基本元素:
Type(消息類型):數據類型定義的容器,它使用某種類型系統(如 XSD)。
Message(消息):通信數據的抽象類型化定義,它由一個或者多個 part 組成。
Part:消息參數
Operation(操作):對服務所支持的操作進行抽象描述,WSDL定義了四種操作: 1.單向(one-way):端點接受信息;2.請求-響應(request-response):端點接受消息,然後發送相關消息;3.要求-響應(solicit-response):端點發送消息,然後接受相關消息;4.通知(notification):端點發送消息。
Port Type(埠類型):特定埠類型的具體協議和數據格式規範。
Binding:特定埠類型的具體協議和數據格式規範。
Port:定義為綁定和網路地址組合的單個端點。
Service:相關埠的集合,包括其關聯的介面、操作、消息等。

文檔結構


WSDL 文檔是利用這些主要的元素來描述某個 web service 的:
元素定義
web service 執行的操作
web service 使用的消息
web service 使用的數據類型
web service 使用的通信協議
一個 WSDL 文檔的主要結構是類似這樣的:
definition of types........
definition of a message....
definition of a port.......
definition of a binding....
WSDL 文檔可包含其它的元素,比如 extension 元素,以及一個 service 元素,此元素可把若干個 web services 的定義組合在一個單一的 WSDL 文檔中。
如需完整的語法概述,請訪問 WSDL 語法 這一節。同樣要記住,與服務交互所需的所有細節都位於其 WSDL 文件中。
●WSDL 支持的消息交換方式
WSDL支持 4 種消息交換方式:
1)單向(One-way):服務端接收消息;
2)請求響應(Request-response):服務端點接收請求消息,然後發送響應消息;
3)要求應答(Solicit-response):服務訪問端發送要求消息,然後接收應答消息。
4)通知(Notification):服務訪問端點發送通知消息。
WSDL 文檔可以分為兩部分。頂部分由抽象定義組成,而底部分則由具體描述組成
抽象部分以獨立於平台和語言的方式定義 SOAP 消息,它們並不包含任何隨機器或語言而變的元素。這就定義了一系列服務,截然不同的網站都可以實現。隨網站而異的東西如序列化便歸入底部分,因為它包含具體的定義。
l 抽象定義
Types
獨立與機器和語言的類型定義
Messages
包括函數參數(輸入與輸出分開)或文檔描述
PortTypes
引用消息部分中消息定義來描述函數簽名(操作名、輸入參數、輸出參數)
2 具體定義
Bindings
PortTypes部分的每一操作在此綁定實現
Services
確定每一綁定的埠地址

功能


怎樣向別人介紹自己的 web service 有什麼功能,以及每個函數調用時的參數呢?大家可能會自己寫一套文檔,大家甚至可能會口頭上告訴需要使用自己的 web service 的人。這些非正式的方法至少都有一個嚴重的問題:當程序員坐到電腦前,想要使用自己的 web service 的時候,他們的工具(如 Visual Studio)無法給他們提供任何幫助,因為這些工具根本就不了解自己的 web service。解決方法是:用機器能閱讀的方式提供一個正式的描述文檔。web service 描述語言 (WSDL) 就是這樣一個基於 XML 的語言,用於描述 web service 及其函數、參數和返回值。因為是基於 XML 的,所以 WSDL 既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據自己的 web service 生成 WSDL 文檔,又能導入 WSDL 文檔,生成調用相應 web service 的代碼。