至今日,SOA的概念渐渐清晰了。架构
有关ESB的概念,已经吵了好多年了,仍是没有定论。异步
我我的认为,ESB原本就是抽象的概念,并且内涵丰富,在不一样的场合含义不一样。所以应该从不一样的角度来认识。分布式
1、SOA和ESB一直是没有明确概念的两个缩略词工具
缘由是这两个词包含的内涵太丰富了,没法用一两句话说清楚,而且,这个词在不一样的地方含义也有所不一样。中间件
SOA----面向服务架构,实际上强调的是软件的一种架构,一种支撑软件运行的相对稳定的结构,表面含义如此,其实SOA是一种经过服务整合来解决系统集成的一种思想。不是具体的技术,本质上是一种策略、思想。事件
ESB----企业服务总线,像一根“聪明”的管道,用来链接各个“愚笨”的节点。为了集成不一样系统,不一样协议的服务,ESB作了消息的转换解释与路由等工做,让不一样的服务互联互通。路由
目前ESB与SOA的确切概念依然没有。但能够明确的说SOA就是一种服务集成思想,它的不一样实现方式可能差异很大,目前SOA最多见的实现方式是SCA和JBI。产品
2、ESB到底是什么软件
这个问题在个大厂商之间,认识和观点也存在很大差别。技术
IBM、Oracle等认为ESB是链接服务的一种模式,但一些开源组织和其余厂商认为ESB是一种产品,而且提供了ESB链接解决方案的实现,这种实现能够认为是中间件,也能够认为是组件工具。
对此,我我的的观点更偏向前者,ESB是一种模式,ESB的实现方式也不少,能够称之为ESB产品。固然在不一样场合ESB的含义也不一样,须要鉴别。
3、为何ESB总和SOA黏在一块
一般,这两个名词总不分家,谈论的话题中“你中有我,我中有你”。
为何是这样的呢?
ESB是SOA吗?
二者之间究竟有什么微妙的关系呢?
带着疑问,继续往下看:
首先,ESB不是SOA。SOA的最多见的实现方式方式是SCA和JBI,而SCA的实现须要ESB,相反JBI则不须要ESB,能够参看本人对JBI和SCA分析解读的文章。
其次,由于IBM和Oracle(收购了BEA和SUN的牛X公司)都推崇SCA模式的SOA,所以SCA实际上已经成为SOA的事实标准,说道SOA,最早想到的就是SCA模式了。
最后,ESB是SCA架构实现不可缺乏的一部分,ESB产品脱离了具体的应用外,没有任何意义。ESB的做用在于实现服务间智能化集成与管理的中介。经过ESB能够访问所集成系统的全部已注册服务。
4、ESB的特色
ESB是一种在松散耦合的服务和应用之间标准的集成方式。它能够做用于:
面向服务的架构 - 分布式的应用由可重用的服务组成
面向消息的架构 - 应用之间经过ESB发送和接受消息
事件驱动的架构 - 应用之间异步地产生和接收消息
ESB就是在SOA架构中实现服务间智能化集成与管理的中介。