`
iloveflower
  • 浏览: 79852 次
社区版块
存档分类
最新评论
  • iloveflower: 呵呵。好好学习。。。。。。。。。。。。
    java 读书
  • Eric.Yan: 看了一点,不过是电子版的……你这一说到提醒我了,还要继续学习哈 ...
    java 读书

SOAPBind style区别

 
阅读更多
翻译自 The Difference Between RPC and Document Style WSDL

rpc和document到底是什么意思?他们如何同"encoded/literal"相关联?二者的冲突来自哪里?

binding的style和use
通常情况下,web服务是由一个wadl文件来描述的的。在这个文件中,抽象的描述所支持的web服务操作和消息,然后关联到一个具体的网

络歇息和消息格式。典型的wsdl文件由这个几个元素组成:tyoes,message.porttype用来描述抽象的定义;biding和service指定具体的实

现。所有的这些元素包装在definitions元素中。

在binding元素中,rpc和document是最值得我们关注的元素。wsdl 的 binding描述了如何将service关联到消息协议;这些消息协议是

http,mime,soap中的任意一种。不过,实际中,soap是最常用的协议;rpc和document的区别也是在soap的下的区别(it is SOAP that

the RPC/document distinction refers to)。通常http(s)是传输soap消息的协议。

<wsdl:binding>元素包含一对参数,style(rpc|document)和use(encoded|literal),他俩会影响到soap消息的格式.他们的使用方式如下


<wsdl:binding name="Config1Binding" type="prt0:CreditLimitLocalWebServiceVi_Document">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
     <wsdl:operation name="creditLimitCheck">
        <soap:operation soapAction="" />
         <wsdl:input>
            <soap:body use="literal" parts="parameters" />
         </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
         </wsdl:output>
</wsdl:operation>
</wsdl:binding>

style属性:
wsdl1.1要求binding的style要么是rpc要么是doucment。这个选择与如何组织soap的负荷相关。下面是分别他们如何影响<soap:body>内

容的细节。
document:<soap:body>的内容由定义在<wsdl:type>中的xml模式指定。他不需要遵循特定的soap规范。简言之,soap消息是通过

<soap:body>中的document发送出去,而没有额外的要遵循的格式规则。document style是一种默认的选择。
rpc: <soap:body>元素的结构需要遵循特定的规则(soap1.1规范第7部分有细节)。根据这些规则,<soap:body>可以包含唯一一个元素

,这个元素在operation后被命名,所有的参数都必须写成这个元素的子元素。

因为可以自由的选择哪种消息格式,遵循document格式的soap消息看上去很像rpc格式。

现在,决定性的问题是:选择其中任意一个选项后的结果是什么样?为何要选择rpc或者document?很多情况下,选择他们后,soap消息

的格式看起来很相像,那么为什么还要提供这种选择呢?原因要从soap标准化的历程中寻找。


use属性
这个属性指定了soap消息的编码规则。他同样在<wsdl:binding>元素中完成。他的值为encoded或者literal.
他引用了一系列规则,soap客户端和soap服务端都遵循这些规则以解释<body>元素中的内容。
use="literal" 意味着type定义遵循xml模式定义
use="encoded" 参考xml中已有的应用数据,通常指的是soap1.1规范中的soap编码规则。如果文档中没有自定义数据,就可以选择

encoded。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics