WSDL语法

  2.2 定义

   这type元素分装了与交换信息先关的类型定义。为了最大的 独立和平台的自然,WSDL更喜欢使用XSD作为同一的类型系统。

   <definitions...>

           <types>

                    <xsd:schema../>

           </types>

   </definitions>

这XSD类型系统能够被用来定义在消息中的类型忽略是否导致有限实际上是XML,或者是否导致XSD schema沿着特别的有线格式。如果有多重的绑定到同样的消息它是非常有趣的,或者如果有一个绑定但是那个绑定类型并没有一个类型系统在广泛的使用。在这些例子中,这推荐的方法对于编码抽象的 类型使用XSD如下:

         使用元素格式

         不要包含属性或者与在线编码的元素。

          数组类型应该扩展数据组的定义。使用ArrayOfXXX对于数组类型。数组中项的类型和数组的域通过使用一个默认的子soappenc:arrayType属性来指定。在写这是,这XSD的标准并没一个集中来指定默认指(刨幺一个QName指的属性)。为了克服这个限制,WSDL

<definitions .... >
    <message name="nmtoken"> *
        <part name="nmtoken" element="qname"? type="qname"?/> *
    </message>
</definitions>
2.3.1 消息部分

 分部分是一个灵活的机制来描述逻辑抽象的内容。一个绑定可能引用一部分为了指定特指绑定的消息关于这部分,例如,如果定义一个消息使用RPC,一个部分可能代表一个参数在这消息。然而,绑定必需被侦查为了定义这师姐意义的部分。

    2.3.2 抽象和示例化消息的对比

  消息定义总被认为是一个抽象消息内容。一个消息绑定描述了这抽象的内容如何被映射到一个具体的格式。然而,在一下情形下,这抽象的定义可能匹配这具体的非常进步或恰当对于一个或更多绑定,所以这些绑定将提供很像映射的消息。然而,其他的绑定同一消息定义可能需要扩展的映射消息。对于这个理由,它知道绑定被这次。

    2.3 端口类型

 一个端口类型是抽象操作和抽象消息的集合。

  <wsdl:definitions....>

       <wsdl:portType name="nmtoken">

                <wsdl:operation name="nmtoken"..../>

        </wsdl:portType>

</wsdl:definitions>

这端口类型名字属性提供了一个唯一的名字。

WSDL提供四中传递原语:

   One-way:终端节点接受消息。

   Request-response。终端节点接受一个消息,和发出一个相关消息。

   Solicit-response。终端发出一个消息,和接受一个相关消息。

   notification。终端节点发出一个消息。

WSDL把这些原语当做操作。尽管request/response或者solicit/response能够被抽象的模块化使用两种one-way消息,但是它是有用的模块化作为原语操作类型因为:

     他们是相同的。

     他们的序列能够被相关的没有已经更加辅助的流消息。

     一下终端节点仅仅接受消息如果他们是异步请求响应。

    一个简单流能够被获得从这些原语当流定义被需要的。

2.4.1 one-way操作

   <wsdl:definitions...> <wsdl:portType...>

      <wsdl:operation name="nmtoken">

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

      </wsdl:operation>

  </wsdl:definitions>

这输入元素指定了抽象的消息格式对于one-way操作。

2.4.2 request-response操作


<wsdl:definitions .... >
    <wsdl:portType .... > *
        <wsdl:operation name="nmtoken" parameterOrder="nmtokens">
           <wsdl:input name="nmtoken"? message="qname"/>
           <wsdl:output name="nmtoken"? message="qname"/>
           <wsdl:fault name="nmtoken" message="qname"/>*
        </wsdl:operation>
    </wsdl:portType >
</wsdl:definitions>
2.4.3 Solicit-response操作

<wsdl:definitions .... >
    <wsdl:portType .... > *
        <wsdl:operation name="nmtoken" parameterOrder="nmtokens">
           <wsdl:input name="nmtoken"? message="qname"/>
           <wsdl:output name="nmtoken"? message="qname"/>
           <wsdl:fault name="nmtoken" message="qname"/>*
        </wsdl:operation>
    </wsdl:portType >
</wsdl:definitions>
 
   2.4.4 通知的操作 

这对于通知操作的语法是:

     <wsdl:definitions...>

         <wsdl:portType....>

                   <wsdl:operation name="nmtoken">

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

                  </wsdl:operation>

   </wsdl:porttype>

</wsdl:definitions>

2.4.5 一个操作属性的名字

 输入和输出元素的名字属性必需是唯一的。

 为了避免必需为每个输入和输出员命名,WSDL提供一下默认的支持基于这操作的名字。如果这名字属性没被指定为一个one-way或者notification消息,它默认这操作的名字。

   2.4.6 参数的序列在一个操作中

  操作没有指定是否他们被使用RPC-like绑定。然而,当使用一个操作RPC绑定,它是有用的来捕捉这元素的RPC函数签名。为了这个理由,一个request-response或者solicit-response操作可能指定参数列表的顺序通过parameterOrder属性。这属性的值如下。

      这部分名字顺序反应了在RPC签名参数的顺序。

      这返回值的部分并不在列表中。

      如果一个部分的名字出现在输入和输出消息,它是一个in/out参数。

     如果一个部分名字出现在仅仅的输入消息,它是一个in参数。

    乳沟一个部分名字出现仅仅输出,它是一个out参数

 

2.5 绑定

一个绑定定义了消息格式和端口细节为了操作和消息定义有一个特别的portType。有可能任何数量的绑定对于一个给定的端口类型。这个语法对于一一个绑定。

<wsdl:definitions .... >
    <wsdl:binding name="nmtoken" type="qname"> *
        <-- extensibility element (1) --> *
        <wsdl:operation name="nmtoken"> *
           <-- extensibility element (2) --> *
           <wsdl:input name="nmtoken"? > ?
               <-- extensibility element (3) --> 
           </wsdl:input>
           <wsdl:output name="nmtoken"? > ?
               <-- extensibility element (4) --> *
           </wsdl:output>
           <wsdl:fault name="nmtoken"> *
               <-- extensibility element (5) --> *
           </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
</wsdl:definitions>
这名字属性提供了一个唯一的名字在所有的绑定定义在一个封装的WSDL文档。

一个绑定的引用这端口类 型,它绑定使用这类型属性。这QName值戒指连接轨迹被定义通过WSDL。

一个绑定必需指定一个端口。

一个绑定不必须指定地址消息。

2.6端口

一个端口的定义一个单独的终端节点通过指定一个单独的地址来绑定。

   <wsdl:definitions...>

       <wsdl:service....>

           <wsdl:port name='nmtoken' binding='qname'>

        </wsdl:port>

    </wsdl:service>

</wsdl:definitions>

这个名字属性提供了一个独特的名字在所有的定义在这封闭的wsdl文档。

这绑定属性参照这绑定使用俩句规则被动。

一个端口禁止指定超过一个地址。

一个端口禁止指定绑定消息,而是地址消息。

2.7 Services

  一个服务是和一套相关的端口:

  <wsdl:definitions....>

      <wsdl:service name="nmtoken">

              <wsdl:port..../>*

         </wsdl:service>

</wsdl:definitions>

这名字属性提供了一个唯一的名字在所有的服务中。

在一个服务中的端口有一下关系:

    没有任何一个端口和其他相互通信。

     如果一个服务有几个段分享一个端口类型,但是拥有不同的绑定或地址,这些端口是可选的。每个端口提供语言相等的行为。这运行一个WSDL文档的使用者来选择特别的端口来和基于一下规则来通信。

    通过检查它的端口,我们能够决定一个服务的端口类型。这运行一个WSDL的使用来决定是否它希望来和一个特定的服务来通信无论它支持集中端口类型。这是有用如果有在这些。必需为了完成特定的任务。






  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值