关闭

soap ESB

标签: soaporacleserviceschemaoutput产品
558人阅读 评论(0) 收藏 举报

我们在做SOAP服务的时候,都需要通过WSDL文件先定义好发布的服务。WSDL服务的描述,组合起来一共可以有以下4种方式。

  1. RPC/encoded
  2. Document/encoded
  3. RPC/literal
  4. Document/literal

由于组合总类达到4种之多,有时候我自己也经常搞得挺头疼的。但其实只要抓住以下几个要素,就能够比较容易的区分它们。

首先我谈谈什么是encoded方式。

encoded方式指的是在SOAP调用的XML标签中(并非指WSDL文件),需要携带有数据类型的信息。比如在SOAP请求调用中有如下信息:

<x xsi:type="xsd:int">5</x>

在这个例子中,xsi:type="xsd:int"指明了x的类型是int的型。这种使用方式会造成SOAP调用时携带的数据过多,降低系统性能。encoded的组合有两张,RPC/encoded和Document/encoded。Document/encoded这种方式也不遵从WS-I标准,RPC/encoded根本没有人使用,所以我们基本上不会再使用带有encoded的方式,它已是一种过时的技术。

那我们接下来看看Document和RPC的区别。

RPC最大的特点是SOAP消息将操作名放入到消息中,Document方式则没有。

<message name="myMethodRequest">

  <part name="x" type="xsd:int"/>

  <part name="y" type="xsd:float"/>

</message>

<message name="empty"/>

<portType name="PT">

  <operation name="myMethod">

    <input message="myMethodRequest"/>

    <output message="empty"/>

  </operation>

</portType>

 

<soap:envelope>

   <soap:body>

     <myMethod>

         <x>5</x> <y>5.0</y>

     </myMethod>

   </soap:body>

</soap:envelope>

上面这个例子就是一个RPC的WSDL定义和SOAP调用,myMethod就是操作名。

 

<types>
    <schema>
        <element name="xElement" type="xsd:int"/>
        <element name="yElement" type="xsd:float"/>
    </schema>
</types>
<message name="myMethodRequest">
    <part name="x" element="xElement"/>
    <part name="y" element="yElement"/>
</message>
<message name="empty"/>
<portType name="PT">
    <operation name="myMethod">
        <input message="myMethodRequest"/>
        <output message="empty"/>
    </operation>
</portType>

 

 

<soap:envelope>

  <soap:body>

    <xElement>5</xElement> <yElement>5.0</yElement>

  </soap:body>

</soap:envelope>

上面这个例子就是一个Document的定义和SOAP调用。大家可以看到,在这个例子中,SOAP消息没有携带操作名。

RCP的短板就是myMethod这个标签并没有定义在Schema中,无法做数据验证。但RPC的长处是其调用带操作名,消息分发相对容易。

Oracle有两个ESB产品,一个是Oracle Service Bus (OSB),另一个是Oracle Enterprise Service Bus (ESB)。

Oracle Service Bus (OSB)是AquaLogic Service Bus (ALSB)的新名称,ALSB是以前BEA公司的ESB名称。Oracle Enterprise Service Bus (ESB)是Oracle的“老”产品,与BEA没有任何的关系。
ESB当前和Oracle的BPEL产品有更好的集成度,并且两个产品都使用相同的适配器框架。
与ESB相比较,OSB提供更丰富的功能,更多的监控和展现能力。此外,OSB也提供更丰富的消息路由,流量控制和消息修饰。
在OSB的下一个版本(11g),它将支持基于JCA标准的适配器框架,使其能够使用当前BPEL和ESB提供的适配器,同时也提高了OSB与其他系统的交互能力。
11g同时也会将ESB的一些功能移植到OSB中,特别是对SCA框架的支持。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:191059次
    • 积分:3120
    • 等级:
    • 排名:第11419名
    • 原创:123篇
    • 转载:36篇
    • 译文:0篇
    • 评论:16条
    文章分类
    最新评论