ESB与SOAP的关系

来源:互联网 发布:重装mac磁盘工具 编辑:程序博客网 时间:2024/05/16 10:05

请教:ESB与SOAP的关系?

最近在学一些SOA相关的知识,有一些迷惑的地方,遂来求教。

先说说我的理解:
ESB是一种组件与组件之间进行消息传递的载体。它类似于计算机中的总线,通过总线将各种硬件连接到一起。那么,因为Web Service是跨平台的,所以ESB可以将企业的所有IT系统连接到一起,然后进行消息交互。而组件之间可能会使用SOAP协议来通信(目前还有一种REST也比较流行)。按照这样来理解的话,ESB应该是一种技术框架,而SOAP是组件Web service的一种消息通信实现方式。

我理解的ESB应该是这样工作,应用A发送消息给ESB,ESB然后再将消息转发给应用B。那为什么应用A直接通过SOAP发送给B呢?这样效率不是更高么?另外,企业的IT系统如果都是在一个网络中,而且它们所提供的Web Service使用的SOAP都是同一命名空间下,就可以相互通信,为什么要加这么一层呢?

我的猜测:ESB是一种中间件,它可以管理消息然后进行一些加工处理,同时也可以做一些统计工作。请教各位在企业中实施过SOA的前辈们给晚辈指点迷津。

感谢。
关注者
96
被浏览
13442

5 个回答

谢邀!

问题1:

ESB是一种组件与组件之间进行消息传递的载体。它类似于计算机中的总线,通过总线将各种硬件连接到一起。那么,因为Web Service是跨平台的,所以ESB可以将企业的所有IT系统连接到一起,然后进行消息交互。而组件之间可能会使用SOAP协议来通信(目前还有一种REST也比较流行)。按照这样来理解的话,ESB应该是一种技术框架,而SOAP是组件Web service的一种消息通信实现方式。

这个理解基本正确,但是ESB不是技术框架,是一种消息和服务集成的中间件平台。SOAP只是一种可以接入和适配到ESB的通信协议,其它包括Rest, JMS, FTP, socket,MQ等都可以接入和适配到ESB。参考如下Jboss ESB的一个图。

ESB有输入的消息,有输出的消息,协议和格式都还可能不同,因此ESB的核心能力会包括了消息集成,协议转换,路由,消息映射转换等。

问题2:

我理解的ESB应该是这样工作,应用A发送消息给ESB,ESB然后再将消息转发给应用B。那为什么应用A直接通过SOAP发送给B呢?这样效率不是更高么?另外,企业的IT系统如果都是在一个网络中,而且它们所提供的Web Service使用的SOAP都是同一命名空间下,就可以相互通信,为什么要加这么一层呢?

对于这个问题主要分几方面阐述:

其一,原来点对点做服务的时候,往往每个服务都需要考虑日志记录,服务审计,服务的访问安全,传输安全和数据安全,服务的路由分发等一系列问题。而这些内容本质是可复用的,在ESB总线中可以统一接管,并通过灵活可配置的模式进行设置。既统一的SOA服务管控和治理的标准,也减轻了原生服务的设计开发工作量。

其二,ESB含了消息中间件的全部功能,正是有了异步消息处理机制后,可以实现业务系统间真正的松耦合架构,如果ESB平台全部集成的是同步服务,则很难算得上完整意义上的松耦合架构。这个是ESB总线另外一个强大的功能,但是我们在进行服务识别和服务设计的时候往往忽略。

最后,在复用层面,如果仅仅将SOA或ESB理解为一个集成平台,那么SOA平台本身的价值将大打折扣。SOA的核心思想一直在强调就是要找到可以复用的服务,这些服务满足离散,松耦合,无状态,粗粒度等特点,同时这些服务可以组装和编排,灵活满足业务变更的需要。
发布于 2016-05-04

ESB:
ESB全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。


SOAP:
SOAP (Simple Object Access Protocol) 顾名思义,是一个严格定义的信息交换协议,用于在Web Service中把远程调用和返回封装成机器可读的格式化数据。事实上SOAP数据使用XML数据格式,定义了一整套复杂的标签,以描述调用的远程过程、参数、返回值和出错信息等等。而且随着需要的增长,又不得增加协议以支持安全性,这使SOAP变得异常庞大,背离了简单的初衷。另一方面,各个服务器都可以基于这个协议推出自己的API,即使它们提供的服务及其相似,定义的API也不尽相同,这又导致了WSDL的诞生。WSDL (Web Service Description Language) 也遵循XML格式,用来描述哪个服务器提供什么服务,怎样找到它,以及该服务使用怎样的接口规范,简言之,服务发现。现在,使用Web Service的过程变成,获得该服务的WSDL描述,根据WSDL构造一条格式化的SOAP请求发送给服务器,然后接收一条同样SOAP格式的应答,最后根据先前的WSDL解码数据。绝大多数情况下,请求和应答使用HTTP协议传输,那么发送请求就使用HTTP的POST方法。

ESB里面可以有SOAP,SOAP是ESB实现数据交换和传输的一种协议之一.
发布于 2016-01-11
ESB就是中间件,它是一种体系架构,包含各种组件,通过ESB可以打通各个异构系统的信息孤岛,实现异构系统的互联互通;可以识别不同的数据源,实现信息的共享。应用A发送消息到应用B,由于A和B可能是异构系统,所以通过ESB可以将A发送的消息转换成B识别的消息发送给B。当然,如果只是一条消息没必要用ESB,直接用SOAP就可以了,但是多个异构系统的通信存在很多的消息通信,这就涉及到服务转换、协议转换、消息路由、同步异步的业务,通过ESB就能很好的解决这些问题。如果直接用SOAP调用的话会把本来就很复杂的系统变得更加复杂,也会大大增加开发成本。这是我见解,仅供参考。
发布于 2015-05-04

企业中各外围系统之间通信的报文格式不一定相同。如果有ABCDE....Z个子系统之间相互通信的话,那么可能需要做笛卡尔积种消息转换方式。而有ESB系统消息路由的话,仅需实现到ESB间标准消息转换即可。

ESB在安全策略上也是很重要的。可以实现身份识别、认证、校验、防抵赖等等。可以真正的实现与业务的解耦,从而实现更清晰的逻辑。

至于ESB和SOA之间浆糊一样的关系,我感觉能说的很多,但说错的可能性也非常大,所以就不说了。

总之ESB主要做了三件事:第一,消息转换。第二消息路由。第三,.... 如果说还有一点别的,那就是加解密,这个对安全性是很重要的。但是这都是次要,主要就是这三件事。很惭愧,就做了A trivial thing,谢谢大家。
发布于 2015-10-29
m.blog.csdn.net/article
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 素炒包菜 泡椒包菜 呛炒包菜 小瓜怎么炒好吃 蛇瓜炒鸡蛋 炒瓜 高瓜炒肉丝 清炒蛇瓜 方瓜炒鸡蛋 炒葫芦瓜 青瓜炒木耳的做法 素炒葫芦瓜的家常做法 青瓜炒鸡蛋的做法 葫芦瓜怎么炒好吃 护子瓜怎么炒好吃 炒青瓜的做法大全家常 炒番瓜的家常做法大全 青瓜炒猪肝的做法 炒茭瓜 师尊养成系统 西瓜炒哈密瓜 炒北瓜 炒南瓜做法 清炒老南瓜 南瓜怎么炒好吃又简单 南瓜炒 炒南瓜片 清炒南瓜片 家常炒南瓜 素炒南瓜 南瓜如何炒好吃又简单 南瓜丝炒肉丝 清炒南瓜丝 清炒老南瓜的做法大全 南瓜可以炒吗 清炒南瓜叶 炒南瓜的家常做法 炒南瓜怎么做 炒南瓜子的功效与作用 南瓜头怎么炒好吃 南瓜炒什么好吃又营养 咸鸭蛋炒南瓜的做法