摘 要:本文引入了轻量级Web开发框架Spring,分析其原理和实现,剖析了核心机制IoC和AOP,并结合MVC模式设计思想,将它分为视图层、控制层、业务逻辑层、数据持久层,并对每层的实现策略进行研究与改进,给出以Spring框架为核心,整合可重用动态数据管理构件和Acegi安全框架的轻量级Web应用框架的总体结构设计。
关键词:轻量级Web应用框架;Spring;控制反转模式
1. 引言 J2EE框架标准将一个系统划分为WEB和EJB两个主要部分,从设计上可以抽象为表现层、业务层和持久层,实现了解耦的目的。因此,在实际编程中,大多数应用从功能上根据这三个层次来划分,但要这样做,没有技术上约束限制是比较困难的,因此一般借助J2EE具体技术来实现,可以使用EJB规范实现服务层和持久层,Web技术来实现表现层。J2EE应用虽然从总体上划分了三个层次,但在针对每一层上的具体应用,要设计出可维护性、高拓展性的软件设计目标还是有一定的难度。因此,类似Spring的轻量级框架应运而生,其目的是许多的应用不需要分布式、不需要J2EE中那些重量级的技术,譬如JNDI,有必要将大多数应用中不必要的技术隔离、改造。轻量级框架的发展已经成为推动J2EE技术发展的重要推动力,已经成为一代J2EE技术构架的基础,为此本文对一种新型轻量级Web应用框架进行相关研究。2. Web应用框架相关研究2.1. 基本概念 框架是一种软件重用技术,是一个应用软件系统部分或整体可重用设计,规定了其应用体系结构,阐明了整个设计、协作构件之间依赖关系,责任分配以及控制流程,具体表现为一组抽象类以及与它们的实例之间的协作方法。采用基于框架的开发,开发者只需要做的是向事先架好的骨架中填入特定的代码,可以使整个系统结构的改善和流程的固定化,提高了整个系统的可重用性和易修改性。 J2EE是一种利用Java2平台技术简化企业解决方案的开发、部署以及管理一些复杂问题的结构体系。J2EE定义了丰富的技术标准,符合标准的开发工具和API为开发企业级应用提供重要支持。J2EE与别的多层体系平台比较,其核心技术及优势表现在:组件技术、Servlet和JSP、JDBCAPI、JNDI和EJB等方面。2.2. 轻量级Web框架 轻量级框架主要是指在Java应用程序开发环境中,简化的编程模型和更具响应能力的容器,旨在消除与传统J2EEAPI有关的不必要的复杂性和限制,缩短应用程序的部署时间,从而提高开发效率。比较流行或即将兴起的轻量级Web框架主要有:Struts框架、Tapestry框架、JATO框架以及Spring框架。本文是基于Spring框架展开的,在此做详细描述:Spring首先是一个开源项目,并且非常活跃;是一个基于反向控制(IoC)和面向方面编程(AOP)的多层J2EE系统框架,但它不强迫开发者必须在每一层中必须使用Spring,因为其模块化做的很好,允许开发者根据自己的需要选择使用它的某一个模块;Spring实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,它采用的IoC可以很容易的实现Bean的装配,它提供了简洁的AOP并据此实现事务管理等特性。3. 新型轻量级Web应用框架 根据Web应用多层开发原则,把基于Spring框架的新型Web应用分为视图层、控制层、业务逻辑层、数据持久层,本节分别对这四层进行分析研究,并分析了Acegi安全框架的工作原理和实现机制以及设计实现了一种可重用动态数据管理构件,最后给出了以Spring框架为核心,整合可重用动态数据管理构件和Acegi安全框架的轻量级Web应用框架的总体结构设计。3.1. 层次分析3.1.1. 视图层 视图层位于整个Web应用层次结构的最顶端,负责处理用户交互,并从业务服务层获取相关数据以显示给用户。现在主流的MVC设计模式思想,视图层主要采用JSP实现,进行数据展现和处理,一般存在如下问题:无法像C/S那样使用丰富的效果来展示数据,不具有展观性;Web应用程序的执行效率,产生了不必要的等待;客户端通过提交窗体或者采用地址栏传递参数的形式发送参数时,不管哪种形式,都将导致页面被重新加载。 Ajax技术的出现,很好的解决了上述问题。Ajax是一种位于客户端的技术,能将客户端由原来的“哑”终端加强成智能化的“富客户端”,它采用异步发送请求的方式代替采用窗体提交实现无刷新更新网页,该技术的应用大大降低了客户端延迟,提高Web应用程序执行效率,解决了浏览器等待数据传输问题,改善了用户体验,使用户可以快速得到Web服务器的数据。Ajax实质上也是遵循Request/Server模式,所以这个框架基本的流程也是:对象初始化->发送请求->服务器接收->服务器返回->客户端接收->修改客户端页面内容。只不过这个过程是异步的。利用Ajax实现的MVC模型如图1所示: 3.1.2. 业务逻辑层 业务逻辑层的职责是:处理应用中的业务逻辑和业务有效性验证逻辑;管理事务;管理业务对象之间的依赖关系;在持久层上构造出业务逻辑的上下文,提供业务逻辑服务;管理基于持久层的业务逻辑实现。一般的业务逻辑层设计方案只是为了适应系统的四层架构而建立的平铺式的结构,存在着两个缺点:首先对于同一个主题对象来说,X1和X2对象模型应该有一些共性;七次在理论上,XXService是业务逻辑,对整个系统来说是重要的战略性决定,有着一定的必然性;而DAO是具体层次的实现,带有相当大的偶然性选择。当使用上面的设计方法,直接生成具体对象就使得偶然决定了必然。这种依赖是不可忍受的,业务由具体的实现来决定,这违反了设计模式中的“开一闭”原则(OCP)。所谓的“开一闭”原则,即是指:“一个软件实体应当对扩展开放,对修改关闭,也就是说,我们在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。”相对于系统来说,业务层XXService的设计应该是可扩展的,即:当添加一个编码表的DAO实体时其代码应该保持不变。为实现XXService层的“开一闭”,必须进行相应的抽象,使得业务逻辑依赖于抽象层,如图2所示。
3.1.3. 数据持久层 在企业级应用开发中,持久层连接着数据资源层和业务逻辑层,起着承上启下的作用。Spring框架本身而言,是一个很有特色的Web应用框架,不仅如此它还提供了对持久层和视图层的实现的封装。对持久层来说,它为业务逻辑层提供数据,所有对数据库的操作都被屏蔽在持久层。Spring在持久层对JDBC进行了良好的封装,通过提供相应的模板和辅助类,在相当程度上降低了JDBC操作的复杂性。并且得益于Spring良好的隔离设计,JDBC封装类库可以脱离Spring Context独立使用,也就是说,即使系统并没有采用Spring作为结构性框架,开发者也可以单独使用Spring的JDBC部分()来简化访问数据库的工作。3.2. 动态数据管理构件 本文动态数据管理构件的设计主要包括了两个方面:数据字典和动态数据对象。数据字典实现与数据库中各表名以及对应字段名的映射关系。数据字典记录了数据库中各表的结构信息,它由存放表名的表和存放各表字段信息的表构成。建立好数据字典后,也可以用它来创建一张物理表。本构件采用的这种方式简化了通过页面的参数传递来取值的代码,简化了对数据库的操作代码,避免了大量SQL语句在代码中的重复出现,从而降低了开发人员的负担,减小了出错机会。动态数据对象的应用是建立在数据字典基础之上的。 数据字典是动态数据对象能够使用的必要条件,是可重用动态数据管理构件的基础。一般认为,数据字典是以数据库中数据基本单元为单位,按一定顺序排列,对其内容作详细说明的数据集。本构件的数据字典是对整个系统中所有数据库表信息的集中管理。主要包括以下两个部分:数据字典表管理;数据字典字段索引表管理。 实现了数据字典后,就能根据数据字典所存储的信息封装一个完整的动态数据对象。一般地,动态数据对象通过绑定一张数据库表,实现对数据库的操作。它可以将页面传入的值有规律地存放在动态数据对象中,从而方便将所需要的值一一对应地注入到数据库中。同样地,也可以将数据库中取出的信息有规律地封装成动态数据对象,从而方便将取出的值显示到页面上。数据对象的封装,使得传值的工作大大简化,简化了数据库的操作。3.3. Acegi安全框架 Spring框架本身没有提供对系统的安全性支持。Acegi是一个能够为基于Spring的应用系统提供描述性安全保护的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring对IOC和AOP的支持。Acegi安全框架主要有4个主要组件来实施安全性。它们分别是:安全拦截器、认证管理器、访问决策管理器、运行身份管理器,它们之间的关系如图3所示。 在Acegi框架中支持多种安全信息的持久化方式,可以在配置文件中配置或存放在关系数据库,由于在实际应用中,需求是经常发生变化的(例如在运行期间用户可能会提出动态改变权限分配的需求)。所以,在配置文件中配置是满足不了实际应用需求的。3.4. 新型架构设计 本文提出的新型轻量级Web应用框架从上到下依次为视图层、控制器层、业务逻辑层、数据持久层,如图4所示:
图 4新型轻量级Web应用框架 视图层通过JSP结合Ajax技术实现,能将客户端由原来的“哑”终端加强成智能化的“富客户端”,Ajax技术采用异步发送请求的方式实现无刷新更新网页。控制层通过Spring提供的灵活的控制器来完成。业务逻辑层由Java Bean或者EJB组件构成。数据持久层是使用JDBC实现的,JDBC是Java核心类库的一部分,是一个面向对象的应用程序接口,通过它可访问各类关系数据库。4. 结束语 本文利用Spring框架将可重用动态数据管理构件和Acegi安全框架整合进来,结合Ajax技术构成了一个轻量级Web应用框架。在此轻量级应用框架的基础上,应用系统分为视图层、控制层、业务逻辑层、数据持久层。Spring IoC编程模式降低了多层开发中层次之间的耦合度,Spring AOP编程方式实现了事务处理,Acegi安全框架实现了系统安全控制,可重用动态数据管理构件简化了操作数据库的复杂性,避免了大量SQL语句在代码中的重复出现,这样就使开发人员能够投入更多精力关注具体业,进而提高开发效率。参考文献:.李磊,程立,周悦虹,译.北京:人民邮电出版社,2007:331-332
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表