现代的系统架构有太多的软件技术、方法和工具,以至于达到几乎不可能跟上最新的更新的程度,更不用说使用所有这些技术。例如,我们现在有SOA、REST、SOAP、JASON、Rails、Seam、EJB3、.Net和J2EE等等。
其中一项受到许多关注的技术是SOA。在大多数言过其实的宣传似乎平息下来之后,人们认识到了SOA并不是万灵药。但是,在设计企业系统的时候,SOA仍是一个可用的有价值的架构。把系统组件模块化并且添加到具体的服务实体中将使管理更加容易。分别提供技术支持将更有意义。
但是,大多数大型企业环境都有许多不是采用最新的技术开发的老式的系统。这些系统通常非常接近业务的核心,这是这些系统目前仍在积极地使用的原因。因为这些系统的性质,这些应用程序变成了很难访问的信息的竖井和业务规则。因为成本太高,要更换这些系统是不可行的。但是,不向比较新的技术转换也许会限制企业的灵活性。
例如,一个假设的企业系统也许包含一个Web应用程序,如使用Seam开发的一个人力资源员工门户,这是为持久应用使用EJB3和Hibernate的、在J2EE应用服务器上运行的门户。我们有一个用C#语言开发的管理员工休假的应用程序,在一个.Net平台上运行。这个应用程序使用SOAP暴露一项Web服务。一个工资单系统在一台大型计算机上运行并且是采用Cobol开发的。我们还有一个用C++和Corba开发的考勤系统。
我们喜欢使用SOA原则把这些系统集成起来以便提供一个统一的基于Web的界面,以便让管理层和员工都能够访问人力资源数据。
企业服务器总线解决方案
企业服务总线(ESB)是这个问题的解决方案之一。企业服务总线是通过一个消息和路由系统(总线)和解析设施(适配器)提供不同的系统之间的沟通方式的一种架构。
在上述情况下,可以使用企业服务总线并且每一个老式的系统配置一个适配器以便把信息和请求解析为兼容特定系统的格式。例如,这个企业服务总线将通过一个CORBA适配器与考勤系统沟通,同时,一个SOAP适配器将提供通讯设施访问休假应用程序的SOAP界面。一旦连接到企业服务总线,每一个应用程序都能够与在这个总线上的任何一个应用程序交换信息。
企业服务总线还能够把数据解析为不同的格式,如城市名称的邮编号码。大多数企业服务总线应用都有许多可以使用的标准的适配器和一个应用程序编程接口。这个应用程序编程接口允许开发人员使用自己的适配器与其它系统进行沟通。
企业服务总线也许还能提供服务编排(把多项服务组合为一项服务)、流程编排(流程流)以及安全和管理(身份识别、监视、审计和登录)。
企业服务总线肯定不是新的,有许多成熟和稳定的实施,开源软件和商业软件都有。一些商业软件包括微软的BizTalk、甲骨文ESB、Progress Sonic、 Pervasive Data Integrator和WebSphere ESB。开源软件的例子有Apache ServiceMix、ChainBuilder ESB、JBoss ESB、Mule ESB和OpenESB。
使用这种解决方案也有一些确定,因为它为系统增加了额外的一层复杂性,需要付出更多的努力进行维护。消息路由和解析的过程增加了延迟,因此,企业服务总线不适合高吞吐量的应用,如电信和实时消息系统等。
如果使用正确,这种技术能够利用SOA的原则,同时扩大老式应用程序的投资回报,增加灵活性的好处,允许采用新技术的应用程序在未来应用。