XML WSDL
- WSDL 代表 Web Services Description Language (Web 服務描述語言)
- WSDL 用於描述 Web 服務
- WSDL 使用 XML 編寫
- WSDL 是 W3C 於 2007 年 6 月 26 日釋出的推薦標準
WSDL 文件
WSDL 文件描述一個 Web 服務。它使用以下主要元素指定服務的地址和服務的方法
元素 | 描述 |
---|---|
<types> | 定義 Web 服務使用的資料(XML Schema)型別 |
<message> | 為每個操作定義資料元素 |
<portType> | 描述可執行的操作以及涉及的訊息。 |
<binding> | 為每個埠型別定義協議和資料格式 |
WSDL 文件的主要結構如下所示
<definitions>
<types>
資料型別定義........
</types>
<message>
定義正在通訊的資料....
</message>
<portType>
操作集......
</portType>
<binding>
協議和資料格式規範....
</binding>
</definitions>
WSDL 示例
這是一個簡化的 WSDL 文件片段
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
在此示例中,<portType> 元素定義“glossaryTerms”作為埠的名稱,並將“getTerm”定義為操作的名稱。
“getTerm”操作有一個名為“getTermRequest”的輸入訊息和一個名為“getTermResponse”的輸出訊息。
<message> 元素定義每個訊息的部分以及關聯的資料型別。
<portType> 元素
<portType> 元素定義一個 Web 服務、可執行的操作以及涉及的訊息。
請求-響應型別是最常見的操作型別,但 WSDL 定義了四種類型
型別 | Definition(定義) |
---|---|
單向 | 該操作可以接收訊息,但不會返回響應 |
請求-響應 | 該操作可以接收請求並返回響應 |
請求-響應 | 該操作可以傳送請求並等待響應 |
通知 | 該操作可以傳送訊息,但不會等待響應 |
WSDL 單向操作
單向操作示例
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >
在上面的示例中,portType “glossaryTerms”定義了一個名為 “setTerm” 的單向操作。
“setTerm”操作允許輸入新的詞彙表術語訊息,使用名為 “newTermValues” 的訊息,其中包含引數 “term” 和 “value”。但是,該操作沒有定義輸出。
WSDL 請求-響應操作
請求-響應操作示例
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
在上面的示例中,portType “glossaryTerms”定義了一個名為 “getTerm” 的請求-響應操作。
“getTerm”操作需要一個名為 “getTermRequest” 的輸入訊息,其中包含一個名為 “term” 的引數,並將返回一個名為 “getTermResponse” 的輸出訊息,其中包含一個名為 “value” 的引數。
WSDL 繫結到 SOAP
WSDL 繫結定義了 Web 服務的訊息格式和協議詳細資訊。
請求-響應操作示例
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation soapAction="http://example.com/getTerm"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>
binding 元素有兩個屬性 - name 和 type。
name 屬性(可以使用任何名稱)定義繫結的名稱,type 屬性指向繫結的埠,在此例中是“glossaryTerms”埠。
soap:binding 元素有兩個屬性 - style 和 transport。
style 屬性可以是“rpc”或“document”。在此例中我們使用 document。transport 屬性定義要使用的 SOAP 協議。在此例中我們使用 HTTP。
operation 元素定義了 portType 公開的每個操作。
對於每個操作,必須定義相應的 SOAP 操作。您還必須指定輸入和輸出的編碼方式。在此例中我們使用“literal”。