您的位置:首页 > 编程语言 > Java开发

基于JAVA平台的框架分析总结

2007-08-23 12:49 435 查看
 

一、综合介绍

  目前在构建JAVA平台的WEB应用的架构过程中普遍存在的一些争议性的关于框架的问题,本项目在综合分析三种常见的框架的基础上,给出一个普遍适用的通用框架,来指导WEB应用程序架构的搭建。项目分析了J2EE, JAVA EE 5, 和SPRING三种框架。

 

软件架构框架本身是一个架构平台的不完全的实现,它可以有部分实现,也可以没有实现,是抽象的;它也可以是一个完整的实现。J2EE和JAVA EE 5是平台规范,是一系列的标准,很多人也称它为框架,是因为它在架构的搭建过程中起到了一个框架上的指导作用,他们并不是一个实现的框架,它们的实现是应用服务器,应用服务器由应用服务器供应商来提供,例如JBOSS等是它们的实现。SPRING则是一个有很好的实现的框架。

 

软件架构框架是搭建软件架构的平台,它能提高软件架构的可重用性,提高软件质量,提高开发效率。

 

架构框架产生的历史,决定了框架在架构构建过程中的重要作用。

 

J2EE的产生是为了解决企业在搭建大型分布式WEB应用过程中存在大量的重复建设,没有对一些公用及通用的模块进行抽象和提取,以及反复搭建大量的低层功能模块时存在着开发效率低,质量问题等,对一些象分布式事务处理、数据库访问、消息收发等提供了企业服务API来对它们进行统一访问。按照J2EE的标准搭建软件架构,可以把更多的注意力放在关注应用的业务逻辑上,更少的关注系统级服务,因为这些都由应用服务器的包容器来提供。

 

SPRING的产生则是为了适应一种需要,即J2EE的复杂性,学习难度大,及可测试性很差,不能达到J2EE设计之初所提出的,提高设计和开发人员的工作效率的目的。

 

JAVA EE 5在改进J2EE的诸多缺陷的同时,吸收了大量轻量级架构的优点,改善了它的可测试性,更多的从用户的需求出发进行了改进。

 

  从这些框架的设计初衷我们可以看出,他们是软件架构搭建的基础平台,以这些框架为基础来搭建软件架构可以使架构有更好的可重用性,并有更多的质量保证,可以减少大量的架构方面的设计的考虑和实现。

二、项目目标

本项目在综合分析J2EE, JAVA EE 5, 和SPRING三种常见的框架的基础上,给出一个普遍适用的通用框架,来指导WEB应用程序架构的搭建。

三、框架分析总结

  对框架的分析包括两部分:一是对框架本身的分析,这种分析研究架构本身的实现;二是对框架在架构搭建中的位置及作用的分析,即分析框架和架构的关系,分析的是软件架构的本身,由此得出一个可以通用的架构的框架。

 

  本项目对这两部分均作了分析。对第一种分析,分析了J2EE和JAVA EE 5的框架本身的架构,包括它的包容器架构,及支持的多层应用模型。SPRING的七个架构模块和他们的关系。这些是对框架的架构分析。本项目没有就这些框架的开发设计及部署方面做非常具体的阐述,因为它们的白皮书中都有详细的介绍。

 

  第二部分分析,分析了J2EE、JAVA EE 5和SPRING的模式对架构设计的指导,也就是通过它们采用的模式的分析来分析它们对软件的架构搭建的重要意义,由此得出通用框架的架构。

 

  这里所说的模式不是B/S,C/S这样的架构模式,也不是通常所说的象GOF的著名的23种设计模式那样的代码级别的设计模式,而是一种对架构搭建起指导作用的模式,象MVC,依赖注入,及AOP等,这些模式的采用决定了软件的架构,因为这些模式决定了组件和组件之间的关系。MVC决定了视图(VIEW)和模型(MODEL)的组件需要通过控制器(COTROLLER)组件进行交互。依赖注入决定了组件之间是主动调用还是被动调用,谁调用谁的这样一种机制。在报告二中分析了这些模式,也分析了它们在框架中所起的作用。

 

项目分析了J2EE, JAVA EE 5, 和SPRING三种框架的架构,以及它们在架构搭建过程中所起的重要作用,并分析了这些框架存在的一些问题,以及改进的维度。这也正是得出通用框架模型的基础。

 

J2EE的复杂导致了它的学习难度大,包容器机制导致了可测试性极差,而且存在严重的对应用的侵入性,所有这些都违背了它的提高开发效率的初衷,一些大师认为J2EE的设计理想化的成分很多,没有贴近用户的实际需求。

 

SPRING的设计采用了简单灵活的原则,很多功能都是可以选择的,对应用程序没有侵入性,应用程序很容易从这种框架中移植到其他框架中。它本身是非分布式的框架,但可以结合分布式的组件来搭建应用程序框架。

 

JAVA EE 5解决了J2EE的很多问题,也有简化的倾向,EJB3.0提供了良好的可测试性,不再依赖包容器。

 

从这些方面的分析我们可以得出简单化是用户的尤其重要的一种需求,也是软件框架改进的方向之一,在设计软件架构的时候,是否要为未来不确定的维护需求在设计之初就做好打算,或者先满足眼前的需要更重要,这些思考可以成为设计软件架构的指导思想。框架的弱侵入性,和松散耦合的特性,使得应用程序有更多改进和灵活的移植空间也成为了重要的趋势;本着从应用需求出发,从用户需求出发的原则,做好架构的考虑,框架为我们提供了更多的可借鉴的思想。

 

四、通用框架模型

  基于对上述三种框架的分析,根据多位著名分析师的观点,得出一个可以在多种应用领域通用的框架模型,并给出一个特定应用软件领域的一个通用模型。

1、多应用软件领域通用框架模型

该模型是基于WEB的多层实现模型的框架,但不仅仅是多层模型。

它不是一个具体的实现了的框架,它是象J2EE这样的指导性的框架。它的固定不变的特征是:

架构模式(Architecture pattern)是B/S结构瘦客户端的多层模型;

参考模型(Reference model)提供声明性事务服务、远程通讯服务、安全性服务、多数据库访问功能、日志处理模块、WEB SERVICE接口等基本功能,它是由多种组件(JSP,SERVLET,EJB,POJO等)模块功能组成的;

映射:架构模式(Architecture pattern)和参考模型(Reference model)到参考架构(Reference Architecture)的映射就是多种决定架构的那些成熟的模式(MVC,依赖注入等)和远程方法调用等,以及AOP等编程方式。

参考架构(Reference Architecture)就是架构模式和参考模式加上映射方法的结果。

 

该通用模型满足下述原则:

采用JAVA组件来实现,OO的编程模型。

简单:在满足软件基本需求的基础上,尽可能的简化,例如采用POJO而不是EJB。

灵活:可以有选择的采用多种实现方法,如可选择各种现成的可用框架的实现,如STRUTS等。

模式:采用经过证明的成功的模式来保证组件及组件之间的交互是一种好的实现方式,如依赖注入等。

 

该框架可变的部分是:

它的实现由应用软件的具体需求从现有的实现方案中进行选择,或者是自行开发。比如说:MVC的实现方法可以采用现有的实现框架,如STRUTS,TAPESTRY等,也可以根据自己的需要开发出符合MVC模式的方案。

 

2、通用的分布式事务处理系统框架模型

针对分布式的基于WEB的分布式事务处理系统我们提出下面的通用框架模型。

它的固定不变的特征是:

架构模式(Architecture pattern)是B/S结构瘦客户端的多层模型;

参考模型(Reference model)是一种松散耦合的模型,采用AOP编程模型。提供声明性事务服务、远程通讯服务、安全性服务、多数据库访问功能、日志处理模块、WEB SERVICE接口等基本功能,该模型由多种组件(JSP,SERVLET,EJB,POJO)的模块功能组成。处理远程事务时业务逻辑采用EJB中的MDB(Message-Driven Bean)来实现异步通讯,因为分布式的事务处理系统需要用户等待的时间会超过他能忍受的时间,而且系统一旦在交易时发生意外情况,信息就会丢失,采用MDB可以减少用户在使用软件系统时等待的时间,他可以在提交请求之后,浏览其它的内容或离开,也可以在系统或服务器出现问题时将信息保存,等问题解决后重新进行交易的处理;

 

映射:架构模式(Architecture pattern)和参考模型(Reference model)到参考架构(Reference Architecture)的映射就是多种决定架构的那些成熟的模式(MVC,依赖注入等),普通对象之间的调用,普通对象到分布式组件的远程方法调用。

参考架构(Reference Architecture)就是架构模式和参考模式加上映射方法的结果。

 

一定是采用JAVA组件来实现,AOP,MDB的实现方式,和它们之间的交互方式,以及遵循的模式。

 

该通用模型应满足多应用软件领域通用框架模型中提到的原则。

 

该框架可变的部分是:

它的实现由应用软件的具体需求从现有的实现方案中进行选择,或者是自行开发。比如说:MVC的实现方法可以采用现有的实现框架,如STRUTS,TAPESTRY等,也可以根据自己的需要开发出符合MVC模式的方案。AOP模型可以采用目前现有的实现,如SPRING中的AOP模块。

 

五、讨论

本项目涉及的技术知识太多,每一个都可以进行很深入的讨论,因此有很多阐述很笼统,不能一一详述,但是从较高的视角,和综合的角度来看这些问题,会对软件系统的架构有更全面和准确的把握,避免陷入某个细节而忽略了整体架构,毕竟全局的考虑在软件架构设计中是最重要的。
 

注重和关注框架可以使我们在架构设计中事半功倍,使用经过验证的框架模型更能保证软件架构的质量和可重用性。

六、结论

  通过对三种框架的分析,得出通用的框架模型,我们可以看到这种模型对应用开发架构的搭建有重要的指导意义,并可以在多种应用领域中应用该模型。对架构框架的争论是个综合的解决方案。

七、原型

  原型是通用的分布式事务处理系统框架模型的驱动软件系统(航空售票系统),通用框架的实现是一些类库的JAR文件构成的架构平台,必需在该平台上搭建一个软件系统才能运行。图1为该驱动软件系统的架构图。



图1 航空售票系统架构图

 

  该系统的架构是以通用框架为基础搭建的,这里不再详细阐述。

参考资料

[1]       Floyd Marinescu, EJB Design Patterns, 2002.
[2]       Rod Johnson with Juergen Hoeller, Expert One-on-One J2EE Development without EJB, 2004.

[3]       第二次报告:JAVA平台的框架分析

[4]       第三次报告:JAVA平台的通用框架模型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息