WebService描述語言WSDL詳解(1)
為什么使用WSDL? 像Inte .net 協議之類的標準有沒有為權威所利用,或者人們這樣看待它是因為順之所獲的好處遠遠超出了代價?曾經有許多試圖建立的標準都流產了。有時候,那些還沒有普遍使用的標準甚至由法令或政府規定強行推出:Ada語言就是一例。 我相信正
為什么使用WSDL?
像Inte
.net協議之類的標準有沒有為權威所利用,或者人們這樣看待它是因為順之所獲的好處遠遠超出了代價?曾經有許多試圖建立的標準都流產了。有時候,那些還沒有普遍使用的標準甚至由法令或政府規定強行推出:Ada語言就是一例。
我相信正是跟隨標準所帶來的好處使它廣泛接受。例如,對于鐵路服務來說,真正重要的是,不同公司所鋪設的鐵路結合到一起,或者是來自好幾個公司的產品協調的工作在一起。幾家大的企業合力建立了
SOAP標準。
Web Service描述語言(WSDL)向這種
Web Service的提供商和用戶推出了方便的協調工作的方法,使我們能更容易的獲得SOAP的種種好處。幾家公司的鐵道并在一起不算什么難事,他們所需遵循的只是兩軌間的標準距離。對Web Service來說,這要復雜得多。我們必須先制定出指定接口的標準格式。
曾經有人說SOAP并不真需要什么接口描述語言。如果SOAP是交流純內容的標準,那就需要一種語言來描述內容。SOAP消息確實帶有某些類型信息,因此SOAP允許動態的決定類型。但不知道一個函數的函數名、參數的個數和各自類型,怎么可能去調用這個函數呢?沒有WSDL,我可以從必備文檔中確定調用語法,或者檢查消息。隨便何種方法,都必須有人參與,這個過程可能會有錯。而使用了WSDL,我就可以通過這種跨平臺和跨語言的方法使Web Service代理的產生
自動化。就像COM和CORBA的IDL文件,WSDL文件由客戶和
服務器約定。
注意由于WSDL設計成可以綁定除SOAP以外的其他協議,這里我們主要關注WSDL在HTTP上和SOAP的關系。同樣,由于SOAP目前主要用來調用遠程的過程和函數,WSDL支持SOAP傳輸的文檔規范。WSDL 1.1已經作為記錄遞交給W3C(見http://www.w3.org/TR/wsdl.html)
WSDL文檔結構 若要理解XML文檔,將之看作塊狀圖表非常有用。下圖以XML的文檔形式說明了WSDL的結構,它揭示了WSDL文檔五個欄之間的關系。
WSDL文檔可以分為兩部分。頂部分由抽象定義組成,而底部分則由具體描述組成。抽象部分以獨立于平臺和語言的方式定義SOAP消息,它們并不包含任何隨機器或語言而變的元素。這就定義了一系列服務,截然不同的網站都可以實現。隨網站而異的東西如序列化便歸入底部分,因為它包含具體的定義。
l 抽象定義 Types
獨立與機器和語言的類型定義
Messages
包括函數參數(輸入與輸出分開)或文檔描述
PortTypes
引用消息部分中消息定義來描述函數簽名(操作名、輸入參數、輸出參數)
2 具體定義 Bindings
PortTypes部分的每一操作在此綁定實現
Services
確定每一綁定的端口地址
下面的圖中,箭頭連接符代表文檔不同欄之間的關系。點和箭頭代表了引用或使用關系。雙箭頭代表"修改"關系。3-D的箭頭代表了包含關系。這樣,各Messages欄使用Types欄的定義,PortTypes欄使用Messages欄的定義;Bindings欄引用了PortTypes欄,Services欄引用Bindings欄,PortTypes和Bindings欄包含了operation元素,而Services欄包含了port元素。PortTypes欄里的operation元素由Bindings欄里的operation元素進一步修改或描述。
在此背景中,我將使用標準的XML術語來描述WSDL文檔。Element是指XML的元素,而"attribute"指元素的屬性。于是:
<element attribute="attribute-value">contents</element> |
內容也可能由一個或多個元素以遞歸的方式組成。根元素是所有元素之中最高級的元素。子元素總是從屬于另一個元素,父元素。
注意,文檔之中可能只有一個Types欄,或根本沒有。所有其他的欄可以只有零元素、單元素或是多元素。WSDL的列表要求所有的欄以固定的順序出現:import, types, message, portType, binding, service。所有的抽象可以是單獨存在于別的文件中,也可以從主文檔中導入。

圖一:抽象定義和具體定義
|
原文轉自:http://www.kjueaiud.com
- 評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
-
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|