首页  ·  知识 ·  架构设计
SOA-SSH分层架构的设计与应用
付更丽 曹宝香       编辑:DEZAI   图片来源:网络
在过去的时间里,软件体系结构试图处理日益增长的软件复杂性。但是,复杂性仍在继续增加,传统的体系结构好像已经达到了它们处理此类问题的极限。同
在过去的时间里,软件体系结构试图处理日益增长的软件复杂性。但是,复杂性仍在继续增加,传统的体系结构好像已经达到了它们处理此类问题的极限。同时,IT组织的传统需要仍然继续存在,比如需要对新的业务需求进行快速的反应,需要不断地减少业务开发成本以及吸收、集成新的业务伙伴和新的客户群。面向服务的体系结构(SOA)提供了问题的解决方案,它通过发布的可发现的接口为其它的应用程序提供服务,而其中的服务可以通过网络进行调用。通过采用SOA框架,企业可以最大程度地减少系统间的耦合,从而提高可重用性。随着J2EE技术的日趋成熟,使之成为SOA实现的一种很好的技术框架。J2EE是一种来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE为搭建具有可伸缩性、灵活性、易维护型的商务系统提供了良好的机制。文中结合SOA和J2EE中的SSH分层架构的优点,设计了SOA-SSH分层架构,并将其应用到了PLM系统的开发中,解决了由于业务增长和环境变化使系统所面对的问题。

一、技术概述

1.SOA和Web服务

面向服务的体系结构(Service-Oriented Architecture,SOA)是指在Internet环境下为了解决业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件体系结构。SOA采用面向服务的软件封装技术,它以服务接口和服务实现的方式呈现,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义的接口和契约联系起来。

任何一种面向服务的体系结构都含有三个角色:服务请求者服务提供者服务注册中心。它们之间存在这样的关系如图1所示。

 

图1:SOA的体系结构

服务提供者:负责创建服务的描述,发不到服务中间层。

服务请求者:从中间层出查找服务的描述,进而调用服务。当然,如果知道服务的具体地址,也可以不通过中间层直接调用。

服务注册中心:服务提供者和服务请求者之间的中介。这里用企业服务总线(ESB)来充当这个角色。

Web Services是一种实现SOA的构架技术,是建立在开放标准和独立于平台的协议基础之上的分布计算单元,它使用SOAP协议在服务提供者与服务使用者之间进行通信。Web Services通过WSDL协议定义服务接口,使用UDDI协议进行Web Services注册和查找。所有这些特性使得它是目前实现SOA的最好方式。基于Web Services的动态发现、配置和即时集成所提供的服务,已成为Internet上的应用主流。从本质上来说,SOA是一种架构模式,而Web服务是利用一组标准实现的服务,Web服务是实现SOA的方式之一。用Web服务来实现SOA的好处是可实现一个中立平台来获得服务,而且越来越多的软件商支持越来越多的Web服务规范,将会取得更好的通用性。

2.ESB和ALSB

企业服务总线(ESB),是由中间件技术实现并支持的面向服务架构(SOA)的一组基础架构功能,支持异构环境中的服务、消息以及基于事件的交互,并且具有适当的服务级别的可管理性。

ESB具有轻量级的分布部署模型,通过对服务的注册、发布、流程化等一系列的管理,提供服务仓库,并可以将服务仓库中来自世界各地的服务根据业务需求有机的结合起来,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。有了ESB,SOA才能释放它的最大价值。

AquaLogic Service Bus(ALSB)是BEA发布的企业服务总线,可以运行在Windows,Linux和Solaris上。ALSB是完全的现代ESB,文中将采用这种服务总线作为构建SOA架构的服务总线。ALSB提供了智能的消息代理、动态传送和转换,所有这些都支持与服务生命周期管理功能(包括服务注册、监控和定义闭值的服务水平协议(Server Level Agreement,SLA)实施)集成的异构服务端点ALSB为IT提供了一个理想的SOA基础,可以实现下列目标:通过动态配置异构共享服务之间的集成来节省时间;通过简单的集中式服务注册来减少维护工作;通过经济有效的服务部署和自动配置来降低成本。

3.SSH

轻量级J2EE软件架构主要由主流的开源框架Struts、Spring、Hibernate根据其各自的应用特性而进行整合而成,选择以Spring框架为核心并整合Struts和Hibernate的框架组合。SSH组合框架如图2所示,包括表现层、业务逻辑层和数据持久层。

 

图2:SSH组合框架图

Struts框架是基于MVC模式的Web框架。MVC设计模式是由模型(Model),视图(View)和控制器(Controller)3个部分组成,而Struts是一个免费的开源Web层应用框架,具有很高的可配置性。Spring框架提供了一种轻量级的企业业务解决方案,用于建立“快速装配式企业组件”。在此基础上,Spring还提供了包括声明式事务管理,RMI或Web Services远程访问业务逻辑,以及可以多种方法进行的持久化数据库的解决方案。Hibernate框架是一个优秀的开放源代码的JAVA对象持久层轻量级框架。它的工作原理是通过配置文件把JAVA域对象和数据库表之间建立起一个映射关系,这样,只需要通过操作这些域对象达到操作数据库的目的。

通过3种框架优化组合实现系统分层解耦,一方面有利于项目组各角色的明确分工,提高开发效率,缩短系统开发周期;另一方面使系统具有良好的扩展能力和可维护性。
 

二、SOA-SSH分层架构设计

结合上面对SOA和J2EE开发中基于SSH的分层架构的分析,提出了SOA-SSH分层架构。这个架构是基于SOA的,也是基于J2EE的,所以这个架构同时含有了二者的特征。J2EE体系中,通常采用EJB组件或Spring来实现业务逻辑层,而在SOA系统中业务是基于服务的,于是这个架构中采用把业务逻辑层的组件包装成Web Service的方式,使用Web Service作为SOA的服务提供者,Spring作为服务的实现,同时使用企业服务总线(ESB)技术来实现SOA中的服务中介,并且在J2EE体系的业务层之下添加了一个服务代理层,用来封装对服务的具体调用代码。架构采用ESB担当SOA服务注册中心的角色,使用ESB能够实现异构系统的集成。SOA-SSH分层架构如图3所示。

 

图3:SOA-SSH分层架构

架构中有关部分的说明:

表示层:JSP/Html/JavaApplet是表示层的实现技术,用来生成Web页面。用户通过浏览器来访问Web页面。Struts中Servlet Control是控制器部分,负责页面层和内部业务的结合,以及页面之间的切换。通常情况下在Web.xml文件中配置。

服务代理层:服务的请求处理程序,用来与服务交互,从而向系统内增加、更新和查询信息,通常由一组java类组成。编写服务调用代码时需从服务总线获得服务的WSDL描述文件,然后根据此文件进行编写。

ESB企业服务总线:服务请求者和服务提供者之间的中间层,对服务进行集中管理。在ESB中的具体工作:客户端向服务总线发送请求消息时,首先发到了代理服务,代理服务收到服务请求后,经过一系列的消息处理发送给业务服务,由它进一步转给外部的服务提供者。

服务层:Web Service是服务的提供者,由无状态会话bean生成,通常是粗粒度的,对应企业的业务逻辑。

业务组件层:负责实现业务逻辑的J2EE组件。由Spring或EJB完成业务构件的开发。

持久化组件:企业应用和关系数据库之间的中间件,优秀的ORM工具。业务数据在内存中表现为对象,在关系数据库中则表现为关系数据,把对象持久化到关系数据库中,需要进行对象一关系映射(ObjectRelationMapping,简称ORM)。

数据库层:关系型数据库,存储企业数据。

三、SOA-SSH在PLM系统中的应用

基于SOA的产品全生命周期管理系统(PLM)是一套支持复杂产品异地协同制造的,具有安全、开放、实用、可靠、柔性、集成化等功能。鉴于PLM系统的功能,把SOA-SSH架构应用到系统开发中,开发出了一套适应性强和高业务敏捷性的系统,使企业有能力快速适应或改变产品,或快速把来自供应商和业务合作伙伴的有优势产品结合到自己的产品中来。

PLM系统中业务层包含Struts框架下的XXAction、XXForm类,服务代理层用ServiceProxy实现,用来与ESB交互来查找服务,业务逻辑层用接口XXManager和实现类XXManagerImpl实现,持久化层用Hibernate实现实体对象X到数据库的映射。开发中把XX模块的功能封装成Web服务XXService,通过xxService.wsdl描述服务,并将其在联沼上注册发布,服务请求根据服务描述文件xxService.wsdl通过服务代理ServiceProxy在ESB中查找需要的服务,返回需要的信息。PLM系统架构参考实现如图4所示。
 

图4:PLM系统架构参考实现

组织管理是PLM系统重要组成部分,组织管理包括机构管理和人员管理。下面以机构管理来分析SOA-SSH的应用。业务层包含Struts框架下的OrgAction,OrgForm类;业务代理层用ServiceProxy实现,用来与ESB交互来查找服务;业务逻辑层用接口OrgManager和实现类OrgManagerImpl实现,利用Spring来管理;持久化层用Hibernate实现实体对象Org到数据库的映射。开发中把组织管理模块的功能封装成Web服务OrgService,通过OrgService.wsdl描述服务,并将其在ESB上注册发布,服务请求根据服务描述文件OrgService.wsdl通过服务代理ServiceProxy在ESB中查找需要的服务,返回需要的信息。

机构管理可以完成机构的添加、删除、修改等功能。其中查找组织信息的序列图如图5所示,具体流程如下:客户端在表现层提交查询组织的信息,系统根据请求信息通过Struts的ActionServle分发至OrgAction,OrgAction利用Spring的配置文件注入ServiceProxy,ServiceProxy根据请求信息到ESB中查找所需服务,若没有找到相应的注册信息,返回失败信息;若找到服务OrgService,则调用此服务,返回信息给客户端。

 

图5:查找机构信息的序列图

基于SOA-SSH开发的PLM系统,系统的功能分层结构清晰,开发简便;系统具有柔性化,能整合异构系统,轻松实现不同系统间的信息交换,架构采用ESB作为服务之间调度的中介,ESB的好处是它不仅可以支持最新的Web服务协议,还可以支持企业遗留系统中所使用的消息传送协议;系统实现服务透明化:SOA架构中使用了企业服务总线,服务对客户端来说是完全透明的;系统具有可伸缩性和分布式特点:根据环境变化非常容易地能够提升系统性能,实现跨部门跨地域交互操作。

四、结束语

利用成熟SSH框架可以搭建具有可伸缩性、灵活性、易维护型的系统,能简化企业系统的开发、部署和管理。SOA服务的分层架构能够实现企业范围的松散耦合。ESB能担任服务注册中心,实现服务间智能化集成与管理。SOA-SSH分层架构,以ESB担当服务交互中介,由于J2EE技术现在在广泛流行的运用,这个架构应该具有典型意义的,而且它也是严格遵循了SOA的特性。通过在PLM系统中的应用,体现了架构的敏捷性。

本文作者:付更丽 曹宝香 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读