4 回答

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
wsdl是一個(gè)接口描述 主要是給用戶生成客戶端用的 依據(jù)wsdl的描述 (參數(shù) ,服務(wù)名之類) 在客戶端生成調(diào)用服務(wù)器接口的方法 wsdl只是一個(gè)接口服務(wù)描述

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
讀懂WSDL
1. WSDL 是什么
WSDL 指網(wǎng)絡(luò)服務(wù)描述語言 (Web Services Description Language)。 是一種使用 XML 編寫的文檔。這種文檔可描述某個(gè) Web service。它可規(guī)定服務(wù)的位置,以及此服務(wù)提供的操作(或方法)。
2. WSDL 文檔結(jié)構(gòu)
WSDL 文檔是利用這些主要的元素來描述某個(gè) web service 的:
元素
定義
<portType>
最重要的 WSDL 元素,它可描述一個(gè) web service可被執(zhí)行的操作以及相關(guān)的消息。
可以把 <portType> 元素比作傳統(tǒng)編程語言中的一個(gè)函數(shù)庫(或一個(gè)模塊、或一個(gè)類)。
<message>
用于描述一個(gè)操作的數(shù)據(jù)元素。每個(gè)消息均由一個(gè)或多個(gè)部件組成。可以把這些部件比作傳統(tǒng)編程語言中一個(gè)函數(shù)調(diào)用的參數(shù)。
<types>
web service 使用的數(shù)據(jù)類型定義。為了最大程度的平臺(tái)中立性,WSDL 使用 XML Schema 語法來定義數(shù)據(jù)類型。
<binding>
web service 使用的通信協(xié)議元素。為每個(gè)端口定義消息格式和協(xié)議細(xì)節(jié)。
一個(gè) WSDL 文檔的主要結(jié)構(gòu)
l 抽象定義
Types 獨(dú)立與機(jī)器和語言的類型定義
Messages 包括函數(shù)參數(shù)(輸入與輸出分開)或文檔描述
PortTypes 引用消息部分中消息定義來描述函數(shù)簽名(操作名、輸入?yún)?shù)、輸出參數(shù))
2 具體定義
Bindings PortTypes部分的每一操作在此綁定實(shí)現(xiàn)
Services 確定每一綁定的端口地址
文檔形式為:
<definitions>
<types>
definition of types........
</types>
<message>
definition of a message....
</message>
<portType>
definition of a port.......
</portType>
<binding>
definition of a binding....
</binding>
</definitions>
WSDL 文檔可包含其它的元素,比如 extension 元素,以及一個(gè) service 元素,此元素可把若干個(gè) web services 的定義組合在一個(gè)單一的 WSDL 文檔中。
2.1.WSDL文檔實(shí)例
歡迎光臨DIY部落,點(diǎn)擊這里查看更多文章教程......
參考地址:http://www.diybl.com/course/3_program/java/javajs/2008315/104672.html
WSDL概述
WSDL就是描述XML Web服務(wù)的標(biāo)準(zhǔn)XML格式,WSDL由Ariba、Intel、IBM和微軟等開發(fā)商提出。它用一種和具體語言無關(guān)的抽象方式定義了給定Web服務(wù)收發(fā)的有關(guān)操作和消息。就其定義來說,你還不能把WSDL當(dāng)作一種對(duì)象接口定義語言,例如,CORBA或COM等應(yīng)用程序體系結(jié)構(gòu)就會(huì)用到對(duì)象接口定義語言。 WSDL保持協(xié)議中立,但它確實(shí)內(nèi)建了綁定SOAP的支持,從而同SOAP建立了不可分割的聯(lián)系。所以,當(dāng)我在這篇文章中討論WSDL的時(shí)候,我會(huì)假定你把SOAP作為了你的通訊協(xié)議。
————————————————————————————
WSDL協(xié)議已經(jīng)被提交給了Internet標(biāo)準(zhǔn)組織W3C審批,目前還處于“確認(rèn)提交”狀態(tài)。W3C維持著正規(guī)的標(biāo)準(zhǔn)化系統(tǒng)同時(shí)提交提案必須經(jīng)過確定的一套批準(zhǔn)過程才能最終成為官方協(xié)議。在這種情況下,WSDL的地位,照外行看,至少標(biāo)準(zhǔn)組織在考慮讓其成為將來可能標(biāo)準(zhǔn)中的一部分。如果你對(duì)這方面的情況感興趣,或碰巧是一位特關(guān)心結(jié)果的“失眠癥患者”,那么你不妨到W3C網(wǎng)站上去讀讀有關(guān)的建議標(biāo)準(zhǔn)。
用WSDL說明服務(wù)
作為一種基于XML的標(biāo)準(zhǔn),如果你對(duì)XML具有一定的了解,那么WSDL的結(jié)構(gòu)對(duì)你就不會(huì)陌生了。WSDL文檔由服務(wù)用來描述數(shù)據(jù)類型的一組元素、服務(wù)可以收到的“消息”以及關(guān)聯(lián)每條消息的SOAP綁定組成。
清單A就是一份簡單的WSDL文檔,該文檔同W3C網(wǎng)站公布的WSDL示范文本是一樣的,它說明了一種股票行情服務(wù)(這也是相當(dāng)標(biāo)準(zhǔn)的一種Web服務(wù))。
再仔細(xì)閱讀清單A,你可以看到,文檔首先以標(biāo)準(zhǔn)的XML頭開頭,其中包含了一個(gè)版本標(biāo)識(shí),而文檔的根元素則被稱為definitions。
Definitions元素可以采用若干種可選屬性,這些屬性說明文檔同時(shí)定義文檔其余部分使用的名稱空間(namespace)。在這種情況下,定義被分配了一個(gè)名字(StockQuote),某些名稱空間定義是根據(jù)以下常規(guī)前綴縮寫制定的:
tns—“this namespace”的縮寫,包含被定義服務(wù)的主名稱空間
xsdl—XML Schema (XSD)名稱空間,用于定義文檔中的類型
soap—SOAP綁定采用的名稱空間
接下來,為了定義服務(wù)的接口需要在type元素內(nèi)定義所需要的任何復(fù)雜類型。這里你必須注意使用標(biāo)準(zhǔn)的XSD句法(屬性),它是創(chuàng)造數(shù)據(jù)類型定義最為適合的方法。不過,如果你愿意,WSDL也能擴(kuò)展使用不同的類型定義系統(tǒng)。
消息概述
按WSDL的用法,消息可以是傳遞給某一服務(wù)公布對(duì)象上的方法的任何參數(shù)或者方法被調(diào)用之后的任何返回結(jié)果。為了繼續(xù)使用股票行情這個(gè)Web服務(wù)例子,單一定義方法多半如以下偽代碼所示:
floatgetLastTradePrice(string tickerSymbol)
這樣,就像你從清單A所看到的那樣,文檔中定義了兩條消息,一條代表方法的輸入?yún)?shù)tickerSymbol(GetLastTradePriceInput消息)另一條代表該方法的返回值(GetLastTradePriceResult消息)——最新的股票價(jià)格。
操作把消息組織到一起而且抽象地代表方法定義。在我們的例子中,這兩條消息都在 GetLastTradePrice操作元素下的getLastTradePrice對(duì)象方法定義中組織起來。在一個(gè) WSDL文件中的所有操作又都挨個(gè)在portType元素內(nèi)分組。
WSDL文檔的余下部分采用服務(wù)器上的偵聽端點(diǎn)(binding 元素)綁定消息同時(shí)把端口定義同單一服務(wù)實(shí)體(service元素)組合起來。清單A的例子就定義了通過SOAP采用服務(wù)所需要的綁定。
WSDL工具
你可以手工創(chuàng)建WSDL文件,不過,你還可以采用相當(dāng)多的工具通過WSDL來為你自動(dòng)處理和定義Web服務(wù)。推薦工具軟件如下:
Omniopera—一圖形用戶界面的WSDL、XML和XSD編輯器
Microsoft的SOAP Toolkit—一種工具包,其中包括根據(jù)WSDL定義創(chuàng)建COM接口的向?qū)С绦?,還包括根據(jù)COM接口創(chuàng)建WSDL的向?qū)С绦?br/>IBM的Web Services Toolkit—一種工具包,其中包括產(chǎn)生WSDL和SOAP部署說明的向?qū)С绦?br/>
參考網(wǎng)址:
http://iask.sina.com.cn/b/11632650.html
- 4 回答
- 0 關(guān)注
- 604 瀏覽
添加回答
舉報(bào)