XML WSDL
- WSDL 代表 Web 服务描述语言
- WSDL 用于描述 Web 服务
- WSDL 使用 XML 编写
- WSDL 是 W3C 于 2007 年 6 月 26 日发布的推荐标准
WSDL 文档
WSDL 文档描述一个 Web 服务。它使用以下主要元素指定服务的地址和方法
元素 | 描述 |
---|---|
<types> | 定义 Web 服务使用的 (XML 架构) 数据类型 |
<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 定义了四种类型
类型 | 定义 |
---|---|
单向 | 操作可以接收消息,但不会返回响应 |
请求-响应 | 操作可以接收请求并返回响应 |
请求-应答 | 操作可以发送请求并等待响应 |
通知 | 操作可以发送消息,但不会等待响应 |
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>
绑定元素有两个属性 - name 和 type。
name 属性(可以使用任何您想要的名称)定义绑定的名称,type 属性指向绑定的端口,在本例中为 "glossaryTerms" 端口。
soap:binding 元素有两个属性 - style 和 transport。
style 属性可以是 "rpc" 或 "document"。在本例中,我们使用 document。transport 属性定义要使用的 SOAP 协议。在本例中,我们使用 HTTP。
操作元素定义 portType 公开的每个操作。
对于每个操作,必须定义相应的 SOAP 操作。您还必须指定输入和输出的编码方式。在本例中,我们使用 "literal"。