1 概述
1.1 面向服务体系结构
面向服务的体系结构(Service Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
1.2 J2EE体系结构
一个典型的J2EE的体系架构一般分为表示层、控制/中介层、业务逻辑层、数据访问层和数据源层五个层次。这个分层体系结构的优点在于:各层之间接口清晰,上下层相对独立。
1.3 ESB(EntERPrise Service Bus)
ESB提供了开放的、基于标准的消息机制,通过简单的标准配置器和接口来完成粗粒度应用(服务)和其他组件之间的互操作。能够满足大型异构环境的集成需求。
2 基于ESB的一种面向服务体系架构的设计
2.1 基于ESB的面向服务体系的参考架构
我们提出的架构即是基于SOA的,同时也是基于J2EE的。在J2EE体系中,通常采用EJB组件或Spring来实现业务逻辑层,而在SOA系统中业务是基于服务的,于是可以在架构中采用把业务逻辑层的组件包装成Web服务的方式,使用Web服务作为SOA的服务提供者,EJB或Spring作为服务的实现,同时使用企业服务总线(ESB)技术来实现SOA中的服务中介,并且在J2EE体系的控制层之下添加了一个服务调用层,用来封装对服务的具体调用代码。具体的构架参考如图1所示。
图1 基于ESB的面向服务的参考架构
2.2 基于ESB的面向服务体系架构的实现参考
上节设计了基于ESB的SOA架构的体系结构,本节结合具体的J2EE技术给出了一个具体的实现参考,详细描述见图2所示。
图2 基于ESB的而向服务体系架构的实现参考
架构实现中各个部分的说明:
JSP/Html/Java Applet:表示层的实现技术,用来生成web页面。客户通过浏览器来访问web页面。
Servlets:控制器部分,负责页面层和内部业务的结合,以及页面之间的切换。通常情况下在web.xml文件中配置。
服务调用代码:服务的请求处理程序,用来与服务交互,从而向系统内增加、更新和查询信息,通常由一组java类组成。编写服务调用代码时需要从服务总线获得服务的WSDL描述文件,然后根据此文件进行编写。
企业服务总线:服务请求者和服务提供者之间的中间层,对服务进行集中管理。使用企业服务总线时,服务请求不用直接发送到服务提供者,而是先送到服务总线,由服务总线将请求消息转发给服务提供者。得到返回消息后,服务总线再转发给服务请求者。
Web服务:服务的提供者。由无状态会话bean生成,通常是粗粒度的,对应企业的业务逻辑。Session Bean:负责实现业务逻辑的J2EE组件。
CMP/BMP:其中BMP要求开发人员在Entity中写SQL:CMP完全由J2EE容器Container完成对数据层的操作,使开发人员不需要写SQL,是目前在实际项目中大量使用的。
Hibernate:企业应用和关系数据库之间的中间件,优秀的ORM工具。RDBMS:关系型数据库,存储企业数据。
3 基于ESB的面向服务体系架构的特点
3.1 服务透明化
SOA架构的—个特性就是SOA架构中所有服务的具体实现、位置和传输协议对调用者来说都是透明的,本文提出的SOA架构利用企业服务总线技术来实现这一特性。服务对客户端来说是完全透明的,客户端只和服务总线打交道,服务总线将真正的服务提供者的地址、传输协议以及服务的具体实现隐藏起来了。
3.2 松散耦合
在软件领域中,耦合是指软件组件之间的依赖程度。对于一个SOA架构来说,松散耦合的标准主要有以下几点:
●异步通信
●以数据为中心的交互模式
●动态绑定服务
●独立于编程语言
在本文提出的SOA架构中。服务调用者只把SOAP请求发给服务总线,并与服务提供者进行直接、同步的交互,服务总线会把包含结果的SOAP响应传送给服务的调用者。而SOAP协议,正是一种以数据为中心的XML消息格式。从而实现了异步通信、以数据为中心、动态的邦定和独立的程序语言。满足松散耦合的特点。
4 基于ESB的面向服务体系架构的扩展
现以最常见的资源管理系统(ERP)和客户关系管理系统(CRM)为例,介绍此架构下基于ESB的SOA扩展后的实现。下面就是解决该问题的实现方法,主要分为几个步骤:
4.1 建立ESB系统总线
ESB总线传递的是消息,需要实现信息的转换、订阅、发布、传送、分派、事件解析、事件通知、事件注册、事件储存等功能。信息转换和事件订阅/发布等,需要写代码完成,如果外部全部是使用Web服务,可以不进行信息转换的工作。
4.2 设计接口
CRM和ERP自身都是一套完整的管理系统,为了实现相互之间的数据传递,需要设计一系列的接口,当有数据变化的时候,可以通过接口将数据传递到ESB,由ESB执行数据的分发。
4.3 根据接口加强ESB功能
当客户信息变化的时候,CRM不能直接将信息发送到ERP系统,而是应该发送到ESB系统总线,反之亦然。
4.4 封装管理系统,向系统添加适配器
ERP和GRM都是独立的管理系统,并且用户往往没有代码,不能直接提供上面提到的服务,我们写一个适配器,分别将CRM和ERP系统封装,适配器里面实现上面的接口。然后将适配器和ESB总线挂起来。
4.5 将组件挂接到ESB总线上
适配器完成后。只需要系统挂接到ESB总线上,并且注册相应的事件,就可以实现数据的同步更新和消息的传递。
5 小结
以J2EE体系结构为切入点,提出了基于ESB的面向服务应用架构的参考模型,并且给出了该架构的实现参考,接着对ESB的这种架构的特点进行了阐述。并对基于ESB的架构进行扩展,使其面向不同的技术、协议、应用。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/