Web 服務(wù)描述語言 (WSDL)



《Web 服務(wù)描述語言 (WSDL)》由會員分享,可在線閱讀,更多相關(guān)《Web 服務(wù)描述語言 (WSDL)(45頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、Web 服務(wù)描述語言 (WSDL) 1.0 2000年9月25日 作者(按姓氏字母順序排列): Erik Christensen,Microsoft Francisco Curbera,IBM Greg Meredith,Microsoft Sanjiva Weerawarana,IBM 版權(quán)所有? 2000 Ariba,International Business Machines Corporation,Microsoft 摘要 WSDL 是一種 XML 格式,用于將網(wǎng)絡(luò)服務(wù)描述為一組端點(diǎn),這些端點(diǎn)對包含面向文檔信息或面向過程信息的消息進(jìn)行操作。這種格式首先
2、對操作和消息進(jìn)行抽象描述,然后將其綁定到具體的網(wǎng)絡(luò)協(xié)議和消息格式上以定義端點(diǎn)。相關(guān)的具體端點(diǎn)即組合成為抽象端點(diǎn)(服務(wù))??梢詫?WSDL 進(jìn)行擴(kuò)展,這樣無論通信時(shí)使用何種消息格式或網(wǎng)絡(luò)協(xié)議,都可以對端點(diǎn)及其消息進(jìn)行描述。但是,本文檔中所述的綁定只涉及有關(guān)如何將 WSDL 與 SOAP 1.1、HTTP GET/POST 和 MIME 一起使用的問題。 此版本的 WSDL 語言尚處于初步階段,沒有提供框架來說明端點(diǎn)的撰寫過程。描述這些約定的完整框架應(yīng)包含撰寫服務(wù)的方式和表達(dá)服務(wù)行為的方式(即相應(yīng)的用于發(fā)送和接收消息的規(guī)則)。服務(wù)的撰寫應(yīng)滿足兩個要求:(1) 確保類型的安全性,(2) 允許在運(yùn)行
3、時(shí)通過交換和綁定服務(wù)引用來傳遞引用。后面的這一條對于在運(yùn)行期協(xié)商約定以及捕獲引用服務(wù)和代理服務(wù)的行為至關(guān)重要。 WSDL 規(guī)范的作者希望及時(shí)發(fā)布 WSDL 的修訂版和/或一些附加文檔,包括:(1) 撰寫服務(wù)的框架;(2) 描述服務(wù)行為的框架。 狀態(tài) 本草案介紹了 Ariba、IBM 和 Microsoft 當(dāng)前在服務(wù)描述方面的一些思路。它對 NASSL、SCL 和 SDL(有關(guān)這方面的早期建議)中的一些概念進(jìn)行了整理合并。 目錄 1. 簡介 2. 服務(wù)定義 o 文檔結(jié)構(gòu) o 類型 o 消息 o 端口類型 o 綁定 o 端口 o 服務(wù) 3. SO
4、AP 綁定 o SOAP 示例 o SOAP 綁定如何擴(kuò)展 WSDL o soap:binding o soap:operation o soap:body o soap:fault o soap:header o soap:address 4. HTTP GET 和 POST 綁定 o HTTP GET/POST 示例 o HTTP GET/POST 綁定如何擴(kuò)展 WSDL o http:address o http:binding o http:operation o http:urlEncoded o http:urlRep
5、lacement 5. MIME 綁定 o MIME 綁定示例 o MIME 綁定如何擴(kuò)展 WSDL o mime:content o mime:multipartRelated o soap:body o mime:mimeXml 6. 參考資料 o 有關(guān) URI 的說明 o WSDL 示例的線上格式 o 擴(kuò)展性元素的位置 o 架構(gòu) 簡介 由于通信協(xié)議和消息格式在 Web 社區(qū)中已經(jīng)過標(biāo)準(zhǔn)化,因而有可能以某種結(jié)構(gòu)化的方式對通信加以描述,而且實(shí)現(xiàn)這一點(diǎn)也顯得日益重要。WSDL 定義了一種 XML 語法,將網(wǎng)絡(luò)服務(wù)描述為能夠進(jìn)行消息
6、交換的通信端點(diǎn)的集合,從而滿足了這種需求。WSDL 服務(wù)定義為分布式系統(tǒng)提供了文檔,并且可用于自動執(zhí)行應(yīng)用程序通信中所涉及的細(xì)節(jié)。 WSDL 文檔將服務(wù)定義為網(wǎng)絡(luò)端點(diǎn)或端口的集合。在 WSDL 中,由于端點(diǎn)和消息的抽象定義已從具體的網(wǎng)絡(luò)部署或數(shù)據(jù)格式綁定中分離出來,因此可以對抽象定義進(jìn)行再次使用:消息,指對交換數(shù)據(jù)的抽象描述;而端口類型,指操作的抽象集合。用于特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范構(gòu)成了可以再次使用的綁定。將網(wǎng)絡(luò)地址與可再次使用的綁定相關(guān)聯(lián),可以定義一個端口,而端口的集合則定義為服務(wù)。因此,WSDL 文檔在網(wǎng)絡(luò)服務(wù)的定義中使用下列元素: · Types - 數(shù)據(jù)類型定義的容器
7、,它使用某種類型系統(tǒng)(如 XSD)。 · Message - 通信數(shù)據(jù)的抽象類型化定義。 · Operation - 對服務(wù)所支持的操作的抽象描述。 · Port Type - 操作的抽象集合,這些操作由一個或多個端點(diǎn)支持。 · Binding - 特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范。 · Port - 定義為綁定和網(wǎng)絡(luò)地址組合的單個端點(diǎn)。 · Service - 相關(guān)端點(diǎn)的集合。 將在第二節(jié)中對這些元素進(jìn)行詳細(xì)說明。應(yīng)該注意的是,WSDL 并沒有引入新的類型定義語言。雖然 WSDL 知道,要描述消息格式需要豐富的類型系統(tǒng),并且它也支持“XML 架構(gòu)規(guī)范 (XSD
8、)”作為其標(biāo)準(zhǔn)類型系統(tǒng),但是,由于不可能只用一種類型系統(tǒng)語法來描述現(xiàn)在和將來的所有消息格式,因此 WSDL 允許通過擴(kuò)展來使用其它類型定義語言。 此外,WSDL 還定義了通用的綁定機(jī)制。通過該機(jī)制可使特定的協(xié)議、數(shù)據(jù)格式或結(jié)構(gòu)與抽象的消息、操作或端點(diǎn)相關(guān)聯(lián)。該機(jī)制還允許對抽象定義進(jìn)行再次使用。 雖然本文檔定義了上述語言擴(kuò)展,但這些擴(kuò)展均位于核心服務(wù)定義框架的上部。所以一定能將 WSDL 與其它綁定擴(kuò)展一起使用。 WSDL 文檔示例 下例是一個提供股票報(bào)價(jià)的簡單服務(wù)的 WSDL 定義。該服務(wù)支持名為 GetLastTradePrice 的單一操作,這個操作是通過在 HTTP 上運(yùn)行 S
9、OAP 1.1 協(xié)議來實(shí)現(xiàn)的。該請求接受一個類型為字符串的 ticker 符號,并返回類型為浮點(diǎn)數(shù)的價(jià)格。有關(guān)此定義中所用元素的詳細(xì)說明,請參見第 2 節(jié)(核心語言)和第 3 節(jié)(SOAP 綁定)。
示例 1 通過 HTTP 運(yùn)行的 SOAP 1.1 請求/響應(yīng)
10、mas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
11、 12、
13、"xsd1:TradePriceResult"/>
14、inding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
15、eral" namespace="
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
16、/output>
22、 23、> ?
24、ge="qname"> *
25、 26、l:documentation…/> ?
<-- extensibility element --> *
27、
28、 extensibility element --> *
服務(wù)是使用以下五個主要元素來定義的:
· types:提供用于描述所交換消息的數(shù)據(jù)類型定義。
· message:代表所傳輸數(shù)據(jù)的抽象定義。消息由一些邏輯片段構(gòu)成,每個邏輯片段分別與某個類型系統(tǒng)中的定義相關(guān)聯(lián)。
· portType:指抽象操作的集合。每個操作引用一條輸入消息和一條輸出消息。
· binding:為由特定 portType 定義的操作和消息指定具體的協(xié)議和數(shù)據(jù)格式規(guī)范。
· port:為綁定指定一個地址,從而定義一個通信端點(diǎn)。
· service:用 29、于聚合一組相關(guān)端口。
將在第 2.2 至 2.7 節(jié)中對這些元素進(jìn)行詳細(xì)說明。本節(jié)的其余部分將介紹 WSDL 中有關(guān)文檔命名、引用文檔定義、使用語言擴(kuò)展和添加上下文文檔等方面的規(guī)則。
文檔命名和鏈接
可以為 WSDL 文檔分配一個類型為 NCNAME 的可選 name 屬性(該屬性將作為文檔的一種輕量級形式)。或者,也可以指定一個類型為 URI 的 targetNamespace 屬性。該 URI 不能是相對 URI。
WSDL 允許使用 import 語句將名稱空間與文檔位置相關(guān)聯(lián):
30、ocation="uri"/> *
31、必須是唯一的。
撰寫樣式
使用 import 元素可以將服務(wù)定義的不同元素分別放入單獨(dú)的文檔中,需要時(shí)再將其導(dǎo)入。這種技術(shù)可以根據(jù)定義的抽象級別將其分開,這樣有助于編寫更為清晰的服務(wù)定義。使 用這種技術(shù)還可以對各種服務(wù)定義進(jìn)行最大限度的再利用。因此,具有這種結(jié)構(gòu)的 WSDL 文檔更易于使用和維護(hù)。在示例 2 中,我們將定義分為數(shù)據(jù)類型定義、抽象定義和特定服務(wù)綁定三類,并將其分別放入三個文檔中。當(dāng)然,這種機(jī)制的使用并不僅限于此例中明確出現(xiàn)的定義(這些定 義只使用了本規(guī)范中所定義的語言元素),也可以使用類似的方式對基于其它語言擴(kuò)展的其它定義類型進(jìn)行編碼和再利用。
示例 2. 示例 1 中 32、所述服務(wù)的另一種撰寫樣式。
33、
34、tNamespace="
xmlns:tns="
xmlns:xsd1="
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
35、element="xsd1:GetLastTradePrice"/>
36、"tns:GetLastTradePriceRequest"/>
38、 39、on="http://my.org/stockquote"/>
40、擴(kuò)展性元素可在文檔中的哪些位置出現(xiàn)。 擴(kuò)展性元素通常用于指定某種特定技術(shù)的綁定。為了區(qū)分特定技術(shù)綁定的語義對通信是必需的還是可選的,可以在擴(kuò)展性元素上設(shè)置一個布爾型的 wsdl:required 屬性。該屬性的默認(rèn)值為假 (false)。定義該屬性的名稱空間為“http://schemas.xmlsoap.org/wsdl/soap/”。 有關(guān)擴(kuò)展性元素的示例,請參見第 3 節(jié)、第 4 節(jié)和第 5 節(jié)。 文檔 WSDL 使用可選的 wsdl:document 元素作為可閱讀文檔的容器。該元素的內(nèi)容可以是任意文本和元素(混雜在 XSD 中)。在所有 WSDL 語言元素中,都允許使用文檔
41、元素。
類型
types 元素包含與交換的消息相關(guān)的數(shù)據(jù)類型定義。為了獲得最大程度的互操作性和平臺中立性,WSDL 選用 XSD 作為標(biāo)準(zhǔn)類型系統(tǒng),并將其當(dāng)作固有類型系統(tǒng)。
42、下,如果使用 XSD 對抽象類型進(jìn)行編碼,建議遵循下列原則: · 使用元素形式(不要使用屬性)。 · 不要使用對線上編碼非常特殊的屬性或元素(也就是說,與消息的抽象內(nèi)容無關(guān)的屬性或元素),例如,soap:root、soap:encodingStyle、xmi:id 和 xmi:name 等。 · 使用 Soap:Array 類型來為數(shù)組類型建模(無論最終形式是否實(shí)際使用 SOAP 1.1 版文檔的第 5 節(jié)中指定的編碼方式)。使用 ArrayOfXXX 作為數(shù)組類型的名稱(其中,XXX 表示數(shù)組中項(xiàng)的類型)。 但是,由于不可能使用一種類型系統(tǒng)語法來描述現(xiàn)在和將來的所有抽象類型,因
43、此,WSDL 允許通過擴(kuò)展性元素來添加類型系統(tǒng)。擴(kuò)展性元素可能出現(xiàn)在 types 元素之下,它標(biāo)識正在使用的類型定義系統(tǒng)并為類型定義提供 XML 容器元素。該元素的作用與 XML 架構(gòu)語言的 schema 元素的作用相似。
44、消息類型屬性,與 XSD 一起使用:
· element:使用 QName 引用一個 XSD 元素。
· type:使用 QName 引用一個 XSD simpleType 或 complexType。
如果使用的名稱空間與 WSDL 所用的名稱空間不同,還可以定義其它消息類型屬性。綁定擴(kuò)展性元素也可以使用消息類型屬性。
定義消息的語法如下所示。其中,消息類型屬性以粗體顯示(消息類型屬性因所用類型系統(tǒng)而異)。
45、"qname" type="qname"?/> *
46、素。
47、
48、
49、types>
50、xType name="POType">
51、
53、s="0" maxOccurs="unbounded" type="tns:CustomerType"/>
54、容映射為具體的格式。但是,在某些情況下,抽象定義可能與一個或多個綁定的具體表示方式完 全相符或十分接近,致使這些綁定不能提供任何映射信息或只能提供少量信息;而同一消息定義的另一個綁定可能需要大量的映射信息。因此,只有在對綁定進(jìn)行檢 查之后,才能確定消息的實(shí)際“抽象程度”。
端口類型
端口類型是一組指定的抽象操作,以及所涉及的抽象消息。
55、sdl:definitions>
端口類型 name 屬性所指定的名稱在其所在 WSDL 文檔定義的所有端口類型中是唯一的。
操作是通過 name 屬性來命名的。
WSDL 提供以下四個可得到端點(diǎn)支持的傳輸原語:
· 單向 (One-way):端點(diǎn)接收消息。
· 請求響應(yīng) (Request-response):端點(diǎn)接收消息,然后發(fā)送相關(guān)消息。
· 要求響應(yīng) (Solicit-response):端點(diǎn)發(fā)送消息,然后接收相關(guān)消息。
· 通知 (Notification):端點(diǎn)發(fā)送消息。
WSDL 稱這些原語為操作。雖然可以使用兩條單向消息抽象地模擬請求/響應(yīng)或要求/響應(yīng),但 56、是將其作為原語操作類型模型也很有用,因?yàn)椋?
· 經(jīng)常需要使用這兩個操作。
· 可以使順序相互關(guān)聯(lián),而不必引入更為復(fù)雜的流信息。
· 某些端點(diǎn)可以只接收消息(如果它們是同步請求響應(yīng)的結(jié)果)。
· 需要流定義時(shí),可以通過算法從這些原語派生簡單的流。
雖然請求/響應(yīng)或要求/響應(yīng)在 WSDL 文檔中是邏輯相關(guān)的,仍然有一個特定的綁定描述具體的相關(guān)信息。例如,請求消息和響應(yīng)消息可以作為一兩個實(shí)際網(wǎng)絡(luò)通信的一部分進(jìn)行交換。
操作使用類型為 QName 的 message 屬性來引用所涉及的消息。該屬性遵循 WSDL 為鏈接定義的規(guī)則。
單向操作
單向操作的語法是:
57、:definitions…>
58、
59、itions>
input 元素和 output 元素分別指定請求和響應(yīng)的抽象消息格式??蛇x的 fault 元素為操作可能產(chǎn)生的錯誤消息(協(xié)議所特有的除外)指定抽象消息格式。
請注意,請求響應(yīng)操作是一個抽象的概念;必須查詢特定的綁定,才能確定消息的實(shí)際發(fā)送方式:是在同一個通信中發(fā)送(例如 HTTP 請求/響應(yīng)),還是作為兩個獨(dú)立的通信發(fā)送(例如兩個 HTTP 請求)。
要求響應(yīng)操作
要求響應(yīng)操作的語法是:
60、eterOrder="nmtokens">
61、應(yīng)的抽象消息格式??蛇x的 fault 元素為操作可能產(chǎn)生的錯誤消息(協(xié)議所特有的除外)指定抽象消息格式。
請注意,請求響應(yīng)操作是一個抽象的概念;必須查詢特定的綁定,才能確定消息的實(shí)際發(fā)送方式:是在同一個通信中發(fā)送(例如 HTTP 請求/響應(yīng)),還是作為兩個獨(dú)立的通信發(fā)送(例如兩個 HTTP 請求)。
通知操作
單向操作的語法是:
62、sage="qname"/>
63、求響應(yīng)或要求響應(yīng)操作的輸入或輸出消息中指定 name 屬性,則該屬性默認(rèn)為分別附帶有“Request”/“Solicit”或“Response”的操作名稱。 必須為每個 fault 元素指定名稱,綁定才能指定錯誤消息的具體格式。fault 元素的名稱在為該操作定義的錯誤集合中是唯一的。 操作中的參數(shù)順序 操作并不指定它們是否與類似 RPC 這樣的綁定一起使用。但是,當(dāng)操作與 RPC 綁定一起使用時(shí),能夠捕獲原始 RPC 函數(shù)簽名非常有用。因此,請求響應(yīng)或要求響應(yīng)操作可以通過類型為 nmtokens 的 parameterOrder 屬性來指定參數(shù)名稱列表。該屬性的值是一個由單個空格分隔的消息片段名稱列表。指定的片段必須遵循以下規(guī)則: · 指定片段的順序必須反映 RPC 簽名中的參數(shù)順序 · return 值片段不在列表中出現(xiàn) · 如果片段名稱同時(shí)在輸入和輸出消息中出現(xiàn),則片段是 in/out 參數(shù) · 如果片段名稱只在輸入消息中出現(xiàn),則片段是 in 參數(shù) · 如果片段名稱只在輸出消息中出現(xiàn),則片段是 out 參數(shù) 請注意,該信息僅作為“提示”,對于那些不關(guān)心 RPC 簽名的用戶,完全可以忽略。而且,即使當(dāng)操作與類似 RPC 這樣的綁定一起使用時(shí),也不是必須使用
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題黨課講稿:以高質(zhì)量黨建保障國有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅(jiān)決打好反腐敗斗爭攻堅(jiān)戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會上和基層單位調(diào)研座談會上的發(fā)言材料
- 總工會關(guān)于2025年維護(hù)勞動領(lǐng)域政治安全的工作匯報(bào)材料
- 基層黨建工作交流研討會上的講話發(fā)言材料
- 糧食和物資儲備學(xué)習(xí)教育工作部署會上的講話發(fā)言材料
- 市工業(yè)園區(qū)、市直機(jī)關(guān)單位、市紀(jì)委監(jiān)委2025年工作計(jì)劃
- 檢察院政治部關(guān)于2025年工作計(jì)劃
- 辦公室主任2025年現(xiàn)實(shí)表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項(xiàng)規(guī)定精神學(xué)習(xí)教育工作部署會議上的講話發(fā)言材料4篇
- 開展深入貫徹規(guī)定精神學(xué)習(xí)教育動員部署會上的講話發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會上的發(fā)言材料
- 國企黨委關(guān)于推動基層黨建與生產(chǎn)經(jīng)營深度融合工作情況的報(bào)告材料
- 副書記在2025年工作務(wù)虛會上的發(fā)言材料2篇
相關(guān)資源
更多