WSDL简介

WSDL简介

一.概述:

WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。

二.什么是 WSDL?

·  WSDL 指网络服务描述语言

·  WSDL 使用 XML 编写

·  WSDL 是一种 XML 文档

·  WSDL 用于描述网络服务

·  WSDL 也可用于定位网络服务

·  WSDL 还不是 W3C 标准

三.WSDL 文档结构

WSDL 文档是利用这些主要的元素来描述某个 web service 的:

元素

定义

<portType>

web service 执行的操作

<message>

web service 使用的消息

<types>

web service 使用的数据类型

<binding>

web service 使用的通信协议

       1<portType> 元素是最重要 WSDL 元素。

(1) 它可描述一个 web service、可被执行的操作,以及相关的消息。

(2) 可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

       2. <message> 元素定义一个操作的数据元素。

每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。

       3. <types> 元素定义 web service 使用的数据类型。

为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。

       4. <binding> 元素为每个端口定义消息格式和协议细节。

一个 WSDL 文档的主要结构是类似这样的:

<definitions>

     <types>

              definition of types........

     </types>

     <message>

               definition of a message....

     </message>

     <portType>

               definition of a port.......

     </portType>

     <binding>

               definition of a binding....

     </binding>

</definitions>

     WSDL 文档包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。

     5. 例子:

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> 元素可定义每个消息的部件,以及相关联的数据类型。对比传统的编程glossaryTerms 是一个函数库,而 "getTerm" 是带有输入参数 "getTermRequest" 和返回参数 getTermResponse 的一个函数。

四.<portType> 端口

端口定义了指向某个 web service 的连接点。

WSDL 定义了四种类型:

类型

定义

One-way

此操作可接受消息,但不会返回响应。

Request-response

此操走可接受一个请求并会返回一个响应

Solicit-response

此操作可发送一个请求,并会等待一个响应。

Notification

此操作可发送一条消息,但不会等待响应。

五.<binding> 绑定

例子:

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

binding 元素有两个属性: name 属性和 type 属性{name 属性定义 binding 名称,而 type 属性指向用于 binding 端口}

soap:binding 元素有两个属性: style 属性和 transport 属性{style 属性可取值 "rpc" "document"transport 属性定义了要使用的 SOAP 协议,在这个例子中我们使用 HTTP}

operation 元素定义了每个端口提供的操作符: 对于每个操作,相应的 SOAP 行为都需要被定义。同时必须如何对输入输出进行编码,例子中我们使用了 "literal"

六.UDDI: "Universal Description, Discovery and Integration"译为通用描述、发现与集成服务

1. UDDI 是一个独立于平台的框架,用于通过使用 Internet 描述服务发现企业,并对企业服务进行集成:

·  UDDI 指的是通用描述、发现与集成服务

·  UDDI 是一种用于存储有关 web services 信息的目录。

·  UDDI 是一种由 WSDL 描述的 web services 界面的目录。

·  UDDI 经由 SOAP 进行通信

·  UDDI 被构建入了微软的 .NET 平台

2. 应用描述

假如行业发布了一个用于航班比率检测和预订的UDDI 标准,航空公司就可以把它们的服务注册到一个UDDI目录中。然后旅行社就能够搜索这个UDDI 目录以找到航空公司预订界面。当此界面被找到后,旅行社就能够立即与此服务进行通信,这是由于它使用了一套定义良好的预订界面。

七.完整的wsdl语法

<wsdl:definitions name="nmtoken"? targetNamespace="uri">
 
    <import namespace="uri" location="uri"/> *
         
    <wsdl:documentation .... /> ?
 
    <wsdl:types> ?
        <wsdl:documentation .... /> ?
        <xsd:schema .... /> *
    </wsdl:types>
 
    <wsdl:message name="ncname"> *
        <wsdl:documentation .... /> ?
        <part name="ncname" element="qname"? type="qname"?/> *
    </wsdl:message>
 
    <wsdl:portType name="ncname"> *
        <wsdl:documentation .... /> ?
        <wsdl:operation name="ncname"> *
            <wsdl:documentation .... /> ?
            <wsdl:input message="qname"> ?
                <wsdl:documentation .... /> ?
            </wsdl:input>
            <wsdl:output message="qname"> ?
                <wsdl:documentation .... /> ?
            </wsdl:output>
            <wsdl:fault name="ncname" message="qname"> *
                <wsdl:documentation .... /> ?
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:portType>
 
    <wsdl:serviceType name="ncname"> *
        <wsdl:portType name="qname"/> +
    </wsdl:serviceType>
 
    <wsdl:binding name="ncname" type="qname"> *
        <wsdl:documentation .... /> ?
        <-- binding details --> *
        <wsdl:operation name="ncname"> *
            <wsdl:documentation .... /> ?
            <-- binding details --> *
            <wsdl:input> ?
                <wsdl:documentation .... /> ?
                <-- binding details -->
            </wsdl:input>
            <wsdl:output> ?
                <wsdl:documentation .... /> ?
                <-- binding details --> *
            </wsdl:output>
            <wsdl:fault name="ncname"> *
                <wsdl:documentation .... /> ?
                <-- binding details --> *
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
 
    <wsdl:service name="ncname" serviceType="qname"> *
        <wsdl:documentation .... /> ?
        <wsdl:port name="ncname" binding="qname"> *
            <wsdl:documentation .... /> ?
            <-- address details -->
        </wsdl:port>
</wsdl:service>
</wsdl:definitions>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值