首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

wsdl文档构造

2012-07-27 
wsdl文档结构本文转自:http://blog.csdn.net/changyuming/article/details/3042601??? ???? WSDL把service

wsdl文档结构

本文转自:http://blog.csdn.net/changyuming/article/details/3042601
???

???? WSDL把service定义为网络端点(或port)集合。在WSDL中,端点和消息的抽象定义与具体的网络部署或数据格式分开定义。这允许对抽象定义的重用。

????WSDL中主要包含以下6个元素:????(1)definitions:是WSDL文档的根源素,主要用来定义web服务的名称、声明一些命名空间并包含下面的几个元素。????(2)types:包含一些WSDL文档中使用的数据类型定义。如果WSDL文档中只使用xml架构内建的简单类型,则可以省略types元素。????(3)message:是对被交换数据的抽象描述。它描述了一个单向的消息,即它要么是一个单一的请求消息,要么是一个单一的响应消息。message元素定义了消息的名称并包含0个或多个part元素,它们表示消息的参数或消息的返回值。????(4)portType:表示端点支持的一组抽象操作。可以把多个message元素结合在一起来构成一个完整的单向或双向操作。????(5)binding:为一个特定的端口类型指定了具体的协议和数据格式。????(6)service:是一组相关端口(使用port元素表示)的集合,其中,每一个端口都表示一个端点,包含具体的绑定和网络地址。????除了以上的6个主要元素之外,WSDL文档中还可以包含documentation元素(用来添加注释)和import元素(用来导入外部文档)。其中在documentation元素中可以包含肉眼可以读的注释信息,这个元素可以出项在任何的WSDL元素中。
1、definitions元素是WSDL文档的根源素,用药声明一些命名空间。下面是常用的命名空间:?????? 在definitions元素中也可以使用targetNamespace属性指定当前WSDL文档的目标命名空间,并可以为它指定一个前缀,这样就可以在当前WSDL文档中通过它来引用自身。例如,下面的两条声明把http://www.mycompany.com/service指定为当前WSDL文档的目标命名空间,并可以在文档中使用s0前缀来引用它:xmlns:s0="http://www.mycompany.com/service"targetNamespace="http://www.mycompany.com/service"????可以使用definitions元素的name属性为WSDL文档指定一个可选名称。????另外,还可以在definitions元素中使用import元素导入外部的文档,并给它指定一个命名空间,形式为:<import namespace="uri" location="uri">
<wsdl:import namespace="http://port.waitingfortime.org/" location="http://localhost:9999/HelloWorld?wsdl=HelloWorld.wsdl" />
? 导入外部文档之后,就可以在当前文档中引用外部文档中的类型和元素。????通过使用import元素,用户可以根据抽象级别把不同的元素定义放在不同的文档中,然后再根据需要导入它们。
2、type元素包含一些与消息相关额数据类型定义。wsdl通常使用xsd作为它的内建类型系统以达到最大的互操作性和平台无关性。因为不可能使用一个单一的类型系统语法来描述所有的抽象类型,所以wsdl允许通过扩充性元素来增加类型系统。扩充性元素可以出项在types元素下,指定一个类型定义系统并包含这些类型定义。
3、message元素表示消息的抽象定义。消息由一个或多个逻辑部分(使用part元素表示)组成,每个部分都可以使用element属性或type属性关联到一个类型上,其中element属性使用限定名引用一个xsd元素;type属性使用限定名引用一个xsd simpleType或complexType。格式如下:
<message name="消息名"><part name="部分名" element="name"(或type="qname")/>......</message>
?其中,消息的名称应该能够在当前wsdl文档中唯一标识一个消息,部分名应该能够在当前消息中唯一地标识一个部分。如果一个消息具有多个逻辑单元,则用户可以在message元素中包含多个part子元素;也可以先定义一个表示消息逻辑结构的复杂类型,然后再message元素中仅包含一个引用该类型的part子元素。例如,下面定义的AddHttpGetin消息中包含2个part元素:
<message name="AddHttpGetin"><part name="x" type="s:string"/><part name="y" type="s:string"/></message>
?下面定义的AddSoapin消息中,则只包含一个引用复杂类型的part子元素Add:
<tpyes><s:element name="Add"><s:complexType><s:sequence><s:element minOccurs="1" maxOccurs="1" name="x" type="s:int"/><s:element minOccurs="1" maxOccurs="1" name="y" type="s:int"/></s:sequence></s:complexType></tpyes><message name="AddSoapin"><part name="parameters" element="s0:Add"/></message>
?4、portType元素表示端口类型的抽象定义,端口类型由一种抽象操作组成。在定义portType元素时,使用name属性指定它的名字。portType元素中可以包含0个或多个operation子元素,operation元素又可以包含对应于操作参数和返回结果的输入和输出消息,分别使用input和output元素表示,在这2个元素中可以使用message属性指定它们所对应的消息。例如:
<portType name="MyFirstWebServicesSoap"><operation name="HelloWorld"><documentation>返回字符串HelloWorld</documentation><input message="s0:HelloWorldSoapin"/><output message="s0:HelloWorldSoapOut"/></operation><operation name="Add"><documentation>返回两个整数的和</documentation><input message="s0:AddSoapin"/><output message="s0:AddSoapOut"/></operation></portType>
?5、binding元素定义了portType元素中的operation和message元素的消息格式和协议细节。一个给定的portType可以具有任意数目的绑定。格式如下:
<wsdl:binding name="绑定名" type="端口类型名"><wsdl:operation name="操作名"><wsdl:input name="输入消息名"></wsdl:input><wsdl:output name="输出消息名"></wsdl:output><wsdl:fault name="错误消息名"></wsdl:fault></wsdl:operation></wsdl:binding>
?




热点排行