- 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" 。