一、WSDL的定义
将网络服务描述为对包含面向文档或过程的信息进行操作的一组端点的XML格式
服务接口
访问规范
服务地点
定义Web服务的公共接口(包括功能、如何调用)
定义与目录中列出的Web服务交互所需的协议绑定和消息格式
抽象地描述了支持的操作和消息并与具体的网络协议和消息格式相关联
?
二、WSDL的基本概念
类型:提供用于描述交换的消息的数据类型的定义
消息:表示正在传输的数据的抽象定义,由逻辑部分组成,每个逻辑部分都与某种类型系统中的定义相关联
端口类型:一系列抽象操作,每个操作都引入其输入和输出消息
绑定:为由特定的端口类型定义的操作和消息指定了具体的协议和数据格式规范
端口:指定用于绑定的地址,定义单个通信端点
服务:用于聚合一系列相关端口
?
三、WSDL的主要结构
一个Web服务发布了一个端口类型集合,这些端口类型使用一个公共的绑定机制绑定到网络地址
每个端口类型都是一组已经发布的操作
每个操作都可以通过消息进行访问
消息分为包含传入数据参数的输入消息和包含结果的输出消息
<definitions namespace = “http://… ”>??<types> XML schema types </types>??<message>??definition of a message</message>??<portType> a set of operations </portType>??<binding> communication protocols </binding>??<service> a list of binding and ports </service></definitions>?
四、WSDL的基本元素<types>
?? ?<types>定义用于定义消息的数据类型,XML的定义形式 XML Schema、XML DTD等等
<types>??<schema???xmlns="http://www.w3.org/2001/XMLSchema">????????<element name="PurchaseOrder">????????????<complexType>??????????????<sequence>????????????????<element name="customerID" type="xsd:string"/>????????????????<element name="orderID" type="xsd:string"/>????????????????<element name="orderItems" type="impl:ArrayOf_tns1_OrderItem"/>?????????????</sequence>??????????</complexType>???????</element>???????<element name="InventoryStatus">……</element>??</schema></types>五、WSDL的基本元素<message>
?? ?<message>定义操作的数据元素,每条消息可以是操作的输入或输出,可以包含一个或多个部分,一部分类似于函数的参数
? ?<message??name="inquiryInventoryRequest">????????????<part??element=" PurchaseOrder " name="parameters"/>???</message>???<message??name="inquiryInventoryResponse">???????????<part??element=" InventoryStatus "? name="parameters"/>???</message>六、每个端口类型都是一系列发布的操作,这些操作可以通过消息访问。每个操作都可以与传统编程语言中的函数进行比较
?<portType name="InventoryService">????????<operation name="inquiryInventory">????????????<input message="inquiryInventoryRequest"???????????????????????name="inquiryInventoryRequest"/>????????????<output message="inquiryInventoryResponse"?????????????????????????name="inquiryInventoryResponse"/>???????</operation></portType>七、操作类型
传统IO签名
端到端:Web服务可以充当客户端或服务端
Proactive主动式:发送请求,阻止直到响应
Reactive响应式:接收请求,发送响应
One-way单向:服务端接收消息,不返回响应
Request-response请求响应:服务端接收请求消息,然后发送响应消息
Solicit-response要求应答:服务端发送请求消息,然后等待应答消息
Notification通知:服务端发送请求消息,不会等待响应
One-way操作
<portType name=“glossaryTerms”>?? ?<operation name=“setTerm”>?? ??? ?<input name=“newTerm”?????? ??? ??? ?message=“newTermValues” />?? ?</operation></portType>请求响应操作
<portType name="glossaryTerms">??<operation name="getTerm">??????<input message="getTermRequest"/>??????<output message="getTermResponse"/>??</operation></portType>要求应答操作
<portType name="transaction">????????<operation name="transactionStatus">???????????<output message="tns:notifyTransactionStatus"/>???????????<input message="tns:transactionStatusResponse"/>???????</operation></portType>通知操作
<portType name=“RegisterPort">?? ?<operation name=“register">?? ??? ?<input name=“customerInfo“??message=“RegInfo"/>?? ?</operation>?? ?<operation name = “register Response”>?? ??? ?<output name = “response”??message=“ResponseInfo”/>?? ?</operation></portType >八、绑定
<binding>元素为一个<portType>描述了特定的通讯协议
每一个<binding>对应一个<portType>
绑定元素描述<portType>的每个操作中每个消息的特定协议。
绑定元素是通用的,它仅定义用于描述绑定详细信息的框架
实际的绑定详细信息是使用可扩展性元素提供的
因为可以在预定义的插槽中使用任何元素,所以该体系结构允许WSDL随着时间的推移而发展
WSDL规范提供了一些用于描述SOAP绑定的绑定元素,尽管它们位于不同的名称空间中。
<wsdl:binding name="InventoryServiceSoapBinding" type="InventoryService">?? ?<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>?? ?<wsdl:operation name="inquiryInventory">?? ?<soap:operation soapAction="http://abc.com/get"/>? ? <wsdl:input name="inquiryInventoryRequest">?? ??? ?<soap:body use="literal"/>?? ?</wsdl:input>?? ?<wsdl:output name="inquiryInventoryResponse">?? ??? ?<soap:body use="literal"/>?????????</wsdl:output>?? ?</wsdl:operation></wsdl:binding>九、服务
Web服务客户端可以从<service>元素中了解访问服务的位置,通过哪个端口访问Web服务的信息。
<service>是<port>元素的集合。 <port>元素定义用于绑定的特定网络地址。
绑定属性将服务的地址与Web服务中定义的<binding>关联。
<wsdl:service name="InventoryService">??????<wsdl:port binding="InventoryServiceSoapBinding" name="InventoryService">??????<soap:address??location="http://localhost:8080/axis/services/InventoryService"/>??????</wsdl:port><wsdl:service> <definitions namespace = “http://… ”>?? ?<types> XML schema types </types>?? ?<message>??definition of a message</message>?? ?<portType> a set of operations </portType>?? ?<binding> communication protocols </binding>?? ?<service> a list of binding and ports </service></definitions>十、WSDL和SOAP的关系
WSDL通常与SOAP和XML模式结合使用,以定义Internet上的Web服务。客户端程序读取WSDL文档以了解其功能。 所使用的数据类型以XML模式的形式嵌入WSDL文件中。然后,客户端使用SOAP实际调用WSDL文档中列出的功能。
?
十一、总结
WSDL提供一个实用的框架来描述:
端口类型:操作和输入/输出
使用SOAP绑定
服务接入口
?
?
?
?
15100977