基于基于ESB的企业应用集成的企业应用集成
1、引言、引言
信息化的发展在给企业带来难得机遇的同时,也给企业带来了新的挑战。巨大的投资为企业建立了众多的信息系统,以帮助企
业进行内外部业务的处理和管理工作。但是这些信息系统可能由不同的品牌导入实施,只关注于各自领域内的数据与业务处
理,由于缺少相应的接口标准和规范,它们各自为政,相互之间无法进行信息共享与业务集成,从而形成“信息孤岛”。
随着企业规模的不断扩大,应用系统不断增加, 对信息共享、系统互操作性和软件重用方面的要求越来越高,这些相对独
立、标准各异的“烟囱”式系统已经不能满足业务的需要,暴露出的弊端越来越多,对企业提出了诸多的挑战。
由于缺少统筹规划,企业内部遗留的IT基础架构庞大且管理起来极其复杂,这些基础架构具有严格的操作要求,分阶段改造非
常困难,这样必然会影响企业对客户需求的响应能力以及新增加和改进后的服务的部署。
一个个的“信息孤岛”常常分属于不同的管理职能部门。由于这些系统没有进行互联,导致难于信息共享,即不同软件提供商的
应用程序之间无法互操作。
在多个系统共存的情况下,同一个客户的信息或者企业的信息,通常在多个系统中同时存在,但是各个系统统计出的数据常常
不一致,为企业领导层进行正确决策增加了难度。
面对这样的挑战,系统整合成为企业迫在眉睫的问题。企业迫切需要一种集成方法,将各种旧的应用系统和新的应用系统集成
起来,这使得企业应用集成(Enterprise Application Integration,EAI)技术产生与发展起来。传统的EAI往往使用如CORBA
和COM等组件化技术进行分布式、跨平台的程序交互,系统整体的拓扑结构较复杂,组件的连接协议是私有的、非标准的。
其存在着诸如系统灵活性差、投入成本巨大、新系统无法快速部署等问题,不能很好的满足企业集成的需求。
在这种背景下,业内近年来提出了SOA(面向服务的架构)模型,将应用系统抽象成一个个粗粒度的服务,标准化服务接
口,松耦合服务架构。使用面向服务的ESB平台集成遗留IT系统,将系统服务化,通过服务组合的方式复用企业IT资产,对于
新开发的信息系统,采用插接方式进行快速部署,缩短了投资回报周期,提高了系统的适应性、灵活性和扩展性。采用这种面
向服务的ESB平台进行系统整合,成为当前企业解决“信息孤岛”的最佳方案。
2、、SOA和和ESB
2.1 面向服务架构SOA
面向服务架构(Service Oriented Architecture,SOA)是一种新型的软件体系架构模式,它是在计算环境下设计、开发、应用、
管理分散服务单元的一种规范,它将应用程序的不同功能单元(称为服务)通过服务间定义良好的接口和契约联系起来。可以
根据需求通过网络对松散耦合的粗粒度服务进行分布式部署、组合和使用。SOA的目标在于让IT系统变得更有弹性,以便更灵
活、更快地响应不断改变的企业业务需求。
目前并没有一个统一、标准的SOA的定义,下面是几种对于SOA的描述:
“SOA本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活
动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。”
“按需连接资源的系统。在SOA中,资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系统结
构相比,SOA规定了资源间更为灵活的松散耦合的关系。”
“SOA是一种用于创建企业IT系统体系结构的体系结构样式,利用了面向服务的原则来实现业务和支持业务的信息系统之间更
为紧密的关系。”
从上述的定义中可以看出的几个关键特性:一种粗粒度、松散耦合服务架构,服务之间通过简单、精确定义的接口进行通讯,
不涉及底层编程接口和通讯模型。
粗粒度性:粗粒度服务提供一项特定的业务功能,采用粗粒度服务接口的优点在于使用者和服务层之间不必再进行多次的往
复,一次往复就足够了。
松耦合性:松耦合性要求 SOA 架构中的不同服务之间应该保持一种松耦合的关系,也就是应该保持一种相对独立无依赖的关
系。
位置透明性,位置透明性要求 SOA系统中的所有服务对于他们的调用者来说都是位置透明的,也就是说每个服务的调用者只
需要知道他们调用的是哪一个服务,但并不需要知道所调用服务的物理位置在哪里。
协议无关性,协议无关性要求每一个服务都可以通过不同的协议来调用。
SOA 架构的出现为企业系统架构提供了更加灵活的构建方式,如果企业架构设计师基于SOA来构建系统架构,就可以从底层
架构的级别来保证整个系统的松耦合性以及灵活性,这将为企业未来商业逻辑的扩展打好坚实的基础。
2.2 企业服务总线ESB
企业服务总线(Enterprise Service Bus,ESB)是基于SOA思想的企业应用集成的基础软件架构。IDC将ESB定义为:基于
开放的标准消息总线,用于通过标准的适配器和接口,来提供各程序和组件之间的互操作功能。它支持相互独立的异构环境中