webservice之WSDL资料详解

转:http://www.educity.cn/wenda/144703.html

 

webservice之WSDL文件详解

  WSDL: Web Services Description Language 网页服务描述语言

  详解WSDL文档元素:

  文件是以XML格式定义的,内容分成了5大元素:

  1、:webservice使用的数据类型,它是独立以机器和语言的类型定义,这些数据类型被标签所使用。

  2、:webservice使用的消息,它定义了webservice函数的参数。在webservice中输入参数和输出参数需要分开定义,使用不同的message标签体。message定义的输入输出参数,被标签使用。

  3、:webservice执行操作。该标签引用标签定义的函数来描述函数的签名(操作名、输入参数、输出参数)

  4、:webservice通信协议。在portType中定义的每一项操作,都在此绑定中实现。

  5、:该标签定义每一绑定的端口地址。

  WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。具体部分,如数据的序列化则归入底部分,因为它包含具体的定义。在上述的文档元素中,属于抽象定义层,属于具体定义层。所有的抽象可以是单独存在于别的文件中,也可以从主文档中导入。

  WSDL文档一个实例:

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

  理解这个WSDL文件结构可能要根据写的webservice程序结构来理解:

  

  下面标红的地方都是元素之间引用的关系。

  1.WSDL文档的根元素:

  

  xmlns:ns1=""

  xmlns:ns=""

  xmlns:wsaw=""

  xmlns:http=""

  xmlns:ax21=""

  xmlns:xs=""

  xmlns:mime=""

  xmlns:soap=""

  xmlns:soap12=""

  targetNamespace="">

  <definitions>定义了文档中用到的各个xml元素的namespace缩写,也界定了本文档自己的 targetNamespace="",这意味着其它的XML要引用当前XML中的元素时,要声明这个namespace。注意xmlns:ns=""这个声明,它标示了使用ns这个前缀指向自身的命名空间。

  2.WSDL文档数据类型定义元素:

  

  

  attributeFormDefault="qualified" elementFormDefault="qualified"

  targetNamespace="">

  

  

  

  

  

  type="xs:string" />

  

  

  

  

  这里定义webservice的一个元素名称returnBook,就是service的一个函数名称(见图),定义了混合类型数据类型,类型是string类型,名称叫isbn

  3.WSDL文档消息体定义元素:< message >:

  

  

  

  

  

  

  这里定义定义了消息请求,这里定义使用的消息是loginRequest和loginResponse,它分别引用了types中的login和loginResponse元素。在types中的login和loginResponse元素定义好了参数类型。有没有Response消息,主要是看你的函数是否有返回值,如果是void,想returnBook这函数就没有returnBookResponse。

  4.WSDL文档操作定义元素:< portType >

  

  

  

  

  

  定义了操作名称login,输入使用的消息是loginRequest,Action是urn:login,输出ns:loginResponse,Action是:urn:loginResponse

  5、WSDL文档操作绑定协议:

  

  首先标签使用的transport和style属性定义了Web Service的通讯协议HTTP和SOAP的请求风格RPC。其次子标签将portType中定义的 operation同SOAP的请求绑定,定义了操作名称soapAction,输出输入参数和异常的编码方式及命名空间。

  如果客户端要调用这方法就要声明是这soapAction名称urn:login。

  6、WSDL文档绑定服务端口地址:

  

  这里描述webservice的服务名称是Library,service是一套<port>元素。在一一对应形式下,每个<port>元素都和一个location关联。如果同一个<binding>有多个<port>元素与之关联,可以使用额外的URL地址作为替换。

  
一个WSDL文档中可以有多个<service>元素,而且多个<service>元素十分有用,其中之一就是可以根据目标URL来组织端口。在一个 WSDL文档中,<service>的name属性用来区分不同的service。在同一个service中,不同端口,使用端口的"name"属性区分。


你可能感兴趣的:(WebServices)