soap ESB

转载 2012年03月27日 03:33:54

我们在做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框架的支持。

ESB、SOAP和WSDL

ESB ESB,Enterprise Service Bus,企业服务总线。这个概念哪来的呢?得先从web service讲起,话说。。。(balabala~~~) web service,可以认...
  • Erica_1230
  • Erica_1230
  • 2016年02月06日 12:05
  • 828

传智播客-web service(2)-ESB、SOAP和WSDL

ESBESB,Enterprise Service Bus,企业服务总线。这个概念哪来的呢?得先从web service讲起,话说。。。(balabala~~~) web service,可以认为是“...
  • fjf133
  • fjf133
  • 2010年02月09日 21:53
  • 1729

ESB、SOAP和WSDL java注入

ESB、SOAP和WSDL java注入   我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记,看it认证题库网的题库 .看完理论的东西,自己静下心来想想,多问自己几个为什么,...
  • u014552589
  • u014552589
  • 2014年04月05日 08:32
  • 764

ESB 与SOA之区别

        他们之间的区别是什么呢,虽然曾经参与构建过所谓之ESB,却没有对概念进行过研究。        SOA:面向服务的体系结构(Service Oriented Architecture,...
  • kenera
  • kenera
  • 2008年12月24日 09:56
  • 6920

谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

SOA: 维基百科解释:SOA:面向服务的软件架构(Service Oriented Architecture),是一种计算机软件的设计模式,主要应用于不通应用组件中通过某种协议来互操作...
  • tantexian
  • tantexian
  • 2015年09月03日 18:13
  • 16856

WSO2 ——(7)ESB功能:协议转换

这篇文章介绍如何通过WSO2 ESB实现协议转换的功能:通过 WSO2 ESB 实现SOAP/HTTP和JMS之间的协议转换,实现客户端与 ESB 之间 request/response 的交互方式。...
  • szh1124
  • szh1124
  • 2014年12月24日 17:10
  • 2104

SOAP和RESTful 框架的 简介、对比和区别

SOAP简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简...
  • caisini_vc
  • caisini_vc
  • 2015年09月15日 12:10
  • 7044

使用CXF 开发SOAP 的webService接口客户端

上次我们讲到了 soap的webService的服务端,
  • Leonardo9029
  • Leonardo9029
  • 2014年11月11日 15:39
  • 1793

ESB和SOAP的概念

ESB: ESB全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要...
  • zhang19931020
  • zhang19931020
  • 2017年03月17日 15:59
  • 135

ESB与SOAP的关系

请教:ESB与SOAP的关系? 最近在学一些SOA相关的知识,有一些迷惑的地方,遂来求教。 先说说我的理解: ESB是一种组件与组件之间进行消息传递的载体。它类似于计算机中的总线...
  • evilcry2012
  • evilcry2012
  • 2017年12月25日 15:13
  • 20
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:soap ESB
举报原因:
原因补充:

(最多只允许输入30个字)