- WSDL是Web服務描述語言
- WSDL用於描述Web服務
- WSDL是XML編寫
- WSDL是從2007年6月26日W3C推薦
WSDL文檔
一個WSDL文檔描述Web服務。 它指定的服務的位置,和該服務的方法,使用這些主要元素:
元件 | 描述 |
---|---|
<types> | 定義(XML Schema)由Web服務所使用的數據類型 |
<message> | 定義每個操作的數據元素 |
<portType> | 描述了可進行與所涉及的消息的操作。 |
<binding> | 定義的協議和數據格式的每個端口的類型 |
WSDL文檔的主要結構是這樣的:
<definitions>
<types>
data type definitions........
</types>
<message>
definition of the data being communicated....
</message>
<portType>
set of operations......
</portType>
<binding>
protocol and data format specification....
</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"作為名稱port ,和"getTerm"作為名稱operation 。
的"getTerm"操作具有input message被稱為"getTermRequest"和一個output message被稱為"getTermResponse"
在<message>元素定義了parts的每個消息和相關的數據類型。
在<portType>元素
所述<portType>元素定義a web service ,該operations可以被執行,並且messages所涉及。
請求 - 響應類型是最常見的操作的類型,但WSDL定義了四種類型:
類型 | 定義 |
---|---|
One-way | 操作可以接收消息,但不會返回響應 |
Request-response | 該操作可以接收一個請求並返回一個響應 |
Solicit-response | 該操作可以發送一個請求,將等待響應 |
Notification | 操作可以發送消息,但不會等待響應 |
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 >
在上面的例子中,端口類型"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>
在上面的例子中,端口類型"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的屬性(you can use any name you want)定義了綁定的名稱, type屬性指向的端口綁定,在這種情況下, "glossaryTerms"端口。
該soap:binding元素有兩個屬性-風格和運輸。
該style屬性可以是"rpc"或"document" 。 在這種情況下,我們使用的文件。 的transport屬性定義了SOAP協議使用。 在這種情況下,我們使用HTTP。
該operation元素定義端口類型暴露的每個操作。
每個操作對應的SOAP動作已被定義。 您還必須指定輸入和輸出是如何進行編碼。 在這種情況下,我們使用"literal" 。