WSDL学习笔记

一、 WSDL简介

1. 什么是WSDL

ü 是网络服务描述语言

ü 使用XML编写

ü 也可以用于定位网络服务

二、 WSDL文档

1. WSDL文档结构

WSDL文档用这些主要元素描述web service(本文中建成ws):

<wsdl:portType> ws可以执行的操作
<wsdl:message> ws
使用的消息?

<wsdl:types> ws使用的数据类型

<wsdl:binding> ws使用的通讯协议

一个WSDL文档的主要结构:

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions>

<wsdl:types>

……

</wsdl:types>

<wsdl:message name="settleMessageRequest">

……

</wsdl:message>

<wsdl:portType name="WebServiceClientPortType">

……

</wsdl:portType>

<wsdl:binding>

……

</wsdl:binding>

<wsdl:service name="WebServiceClient">

……

</wsdl:service>

</wsdl:definitions>

WSDL文档可以包含其他元素

WSDL types元素定义ws使用的数据类型,为了达到平台中立性,WSDL使用XML Schema语法来定义数据类型

WSDL message元素定义一个数据操作的元素,类似于函数的参数

WSDL portType元素是最重要的WSDL元素,可以描述一个ws所有可执行的操作以及相关信息,类似于函数库

WSDL Binding为每个portType定义消息格式和协议细节

2. WSDL实例

简化的WSDL文档片段

<message name=”getNameRequest”>

<part name=”term” type=”xs:string”>

</message>

<message name=”getNameResponse”>

<part name=”value” type=”xs:stirng”>

</message>

<portType name=”glossaryTerms”>

<operation name=”getTerm”>

<input message=”getNameRequest”/>

<output message=”getNameResponse”/>

</operation>

</portType>

在这个例子中,glossaryTermsportType名称,getTerm为操作名称,getTerm拥有一个名为getNameRequest的输入消息,一个名为getNameResponse的输出消息

<message>可以定义每个message的部件part,以及相关联的数据类型

三、 WSDL端口portType

WSDLportType描述ws所有的操作

1. 操作类型

WSDL定义了四种操作类型

One-way 此操作服务端接受消息,但不会返回响应

Request-response 服务端接受一个消息,并返回给客户端一个响应

Solicit-response 服务端发起一个请求,客户端返回一个响应

Notification 服务端发送给客户端一个通知。?

2. One-way操作

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

3. Request-Response 操作

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

4. Solicit-response操作

<wsdl:definitions .... >

<wsdl:portType .... > *

<wsdl:operation name="nmtoken" parameterOrder="nmtokens">

<wsdl:output name="nmtoken"? message="qname"/>

<wsdl:input name="nmtoken"? message="qname"/>

<wsdl:fault name="nmtoken" message="qname"/>*

</wsdl:operation>

</wsdl:portType >

</wsdl:definitions>

先定义output,再定义input

个人理解:client实现nmtoken方法,供server端调用。

四、 WSDL绑定

1. 绑定到SOAP

<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=”bl”>

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

</soap:binding>

</binding>

binding元素有两个属性,type指示要绑定的port(函数库)glossaryTerms

soap:binding元素有两个属性,styletransport

style可以取值为document或者rpc

transport定义SOAP使用的传输协议

soap:body use属性可以取值为literal或者encoded

对于styleuse,推荐使用documentliteral

详细区别见 http://www.ibm.com/developerworks/cn/webservices/ws-whichwsdl

transport取值范围?

五、 WSDLUDDI

六、 完整的WSDL语法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值