我应该使用哪种样式的 WSDL 呢(六)

日期: 2007-12-17 作者:Russell Butek 来源:TechTarget中国

  采用文档/文字非包装的样式的理由

  如果您已经重载了操作,就不能采用文档/文字包装的样式。

  想象一下,除了我们一直在使用的方法之外,还有另一种方法,请参见清单 10。

  清单 10. 用于文档/文字包装的有问题的方法

public void myMethod(int x, float y);
public void myMethod(int x);

  WSDL 允许重载的操作。但是当你向 WSDL 上添加包装模式的时候,需要元素有与操作相同的名称,并且在 XML 中不能有两个名称相同的元素。所以您必须采用文档/文字非包装的样式或某种 RPC 样式。

  采用 RPC/文字的样式的理由

  由于文档/文字非包装的样式没有提供操作名,所以在有些情况下,您将需要采用某种 RPC 样式。比如说清单 11 中的一组方法。

  清单 11. 用于文档/文字非包装的样式的问题方法

public void myMethod(int x, float y);
public void myMethod(int x);
public void someOtherMethod(int x, float y);

  现在假设你的服务器接收到了文档/文字的 SOAP 消息,你可以回头看一下清单 7。服务器应该发送哪一种方法呢?所有您能确切知道的就是,它一定不是 myMethod(int x),因为消息有两个参数,而这种方法只需要一个参数。它可能是其他两种方法中的一种。采用文档/文字的样式,您没有办法知道是哪一种方法。

  假定服务器接收到一个 RPC/文字的消息,而不是文档/文字的消息,如清单 5 所示。对于这种消息,服务器很容易决定把它发送到哪一种方法。你知道该操作名称是 myMethod,并且你知道你有两个参数,因此肯定是 myMethod(int x, float y)。

  采用 RPC/编码的理由

  使用 RPC/编码样式最重要的原因是为了数据图表。设想你有一个二进制树,如清单 12 所示。

  清单 12. 二进制树节点 schema

<complexType name="Node">
    <sequence>
        <element name="name" type="xsd:string"/>
        <element name="left" type="Node" xsd_nillable="true"/>
        <element name="right" type="Node" xsd_nillable="true"/>
    </sequence>
</complexType>

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐