一种Web应用框架的设计与实现

1 绪论
1.1 课题研究背景和现状
1.1.1 研究背景
在企业信息化建设蓬勃发展的今天,企业应用系统受到各大企业广泛的关注。企业应用系统使得企业的生产模式、人们的工作方式及管理理念都发生了改变,显著提高了企业的经济效益和社会效益[1]。如今市场竞争激烈,企业对信息系统的需求量与日俱增,但逐个定制开发的方式已无法满足企业快速发展的需求。因此,对于一些需求简明的系统,往往会购买现成软件解决问题。但是各个企业具体业务不同,需求很难统一,现成软件只能满足最通用的情况和最一致的操作,比如财务系统、内容发布系统等,对于个性化的业务处理就难以胜任了。如何最大程度地萃取不同企业应用系统的共性,重复使用已经完成的设计和代码,对企业应用系统中典型场景给出最佳解决方案—这是一个“一般性”的问题;如何让一个已经完成的软件产品适应极为多变、复杂的企业需求—这是一个“特殊性”的问题,如何把“一般性”问题与“特殊性”问题分离是当前企业应用系统研究者关注的热点问题之一,而拥有一个适合开发企业应用系统的企业应用框架成为解决这一问题的最好解决方案。这一框架包含从大量的企业应用系统开发中精选出的系统“不变项”,因此具有很强的普适性和实用性[2]。
框架是一个半成品[2],包含了可复用的设计和代码,开发人员在面对不同的需求时都可以基于此框架进行具体系统开发,开发过程只需关注个性化业务功能的实现,而一些通用的基础功能及服务都可以从框架本身得到复用,从而大大缩短项目开发周期,节省项目的开发成本,降低项目管理的难度和风险,提升产品的交付质量,从而提高软件企业的市场竞争能力。
由此看来,为了更好的满足企业客户的需求,为了提高软件企业的竞争力,实现软件提供商和企业客户的双赢,开发一个企业应用框架成为关注的焦点。
1.1.2 开源框架
针对企业应用系统各层次开发中存在的种种问题,开源社区涌现出很多开源框架,它们在不同层面提出了相应的解决方案。这为企业应用系统开发提供了很大的便利性。
从广泛应用的四层Web应用体系结构(4-tier)看,持久层的典型代表有Hibernate、MyBatis、JPA、Spring JDBC等,它们极大地简化了数据访问操作。业务层典型代表有Spring、Hivemind[3]、PicoContainer[3]等,它们负责管理业务对象。控制层的典型代表有Struts2、Spring MVC、JSF、Stripes、Tapestry、Wicket等,它们负责请求的分派和页面的跳转。表示层的典型代表有EasyUI、BootStrap、ExtJS、DWZ等,它们提供了丰富的页面组件,使界面风格得到统一。
这些开源框架大都具有高可靠性、高安全性,可以处理系统很多细节问题且拥有丰富的技术文档,学习难度不大,结构良好,扩展性较强,而且不断升级,版本不断更新。因此开源框架倍受Web应用系统开发者的青睐。
1.1.3 研究现状和趋势
开源框架对于企业应用系统中大量典型场景给出了最优的实践。在具体开发时,与其无视前人的成果,重新构思方案,不如套用这些成熟、稳定的做法。这不仅能加快开发进度,更能够提升系统的质量和健壮性[2]。但当前的框架只是关注于Web应用系统某一方面,面对如此众多的优秀开源框架如何进行恰当的选型成为设计师和开发者必须面临的问题,且确定技术选型之后如何进行框架整合从而实现一个面向企业级应用的统一Web应用开发平台成为了另一个需要解决的问题。针对这些问题,许多开源项目纷纷给出了自己的解决方案。
AppFuse是Matt Raible开发的一个指导性的入门级J2EE框架,它集成了流行的基础框架,如:Hibernate、Struts、Spring、DBUnit、Ant、Log4j、Struts Menu、Xdoclet、SiteMesh、Velocity、JUnit、JSTL、WebWork,提供了Web系统常见的功能,如登陆、用户管理和权限管理等。利用它可以快速开发应用系统,并且可以依靠开源软件的功能降低软件开发成本[4]。
SpringSide以Spring Framework为核心,提供一个Pragmatic的企业应用KickStart与Full-Stack的开源构件库,是JavaEE世界中的主流技术选型,最佳实践的总结与演示[5]。
lightssh 是灵活的、通用的、可扩展的J2EE开源框架[6]。它集成了Spring、Hibernate、Struts2、Shiro、Quartz、SLF4J、CXF等优秀的开源组件。同时,自身附带了实际应用中很多常用功能。
jeecg是一款基于代码生成器的J2EE智能开发平台[7],它可以有效解决信息孤岛问题,生成统一代码、统一规范、统一设计思路,使开发者能在这个平台上,快速开发出高效高质量代码,缩短项目开发周期。它采用Spring MVC+Hibernate+Spring JDBC基础架构,采用面向声明的开发模式,基于泛型方式编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等功能,再配合代码生成器的使用将JavaEE的开发效率提高6倍以上,可以将代码减少60%以上。
JeeSite是一个开源的企业信息管理系统基础框架[8],主要定位于“企业信息管理”领域,可用作企业信息管理类系统、网站后台管理类系统等。它非常强调开发的高效性、健壮性和安全性。它内置了一系列企业信息管理系统的基础功能,并对常用工具进行了封装,使用它可以快速开发出优秀的信息管理系统。
除此之外还有JessMA[9]、sypro[10]、sshe[11]等Web应用基础框架。这些开源项目在不断的完善和升级中,框架也越来越稳定。从事Java Web开发的工作者也不再自己从零进行框架设计和整合,而逐渐把注意力转移到这些成型的基础框架上借助框架已有的功能和技术进行具体系统的开发。利用Web应用框架开发Web应用系统的方式正逐渐代替传统的开发方式成为开发Web应用系统的一种新的可复用的开发方式。
1.2 课题研究目的和方法
上文提到的Web应用基础框架在易用性、灵活性、扩展性、通用性及高效性上表现出很多不足,针对这些不足本课题设计并实现了一个适合开发信息管理类系统的高效、稳定、安全、灵活、易于扩展和维护且简单易用的Web应用框架,内置权限管理、机构管理、区域管理等基础模块及缓存、日志、定时任务、Excel导入导出等基础功能。同时展现一个Web框架从需求、设计、实现及测试的整个过程。
在充分考虑框架需求的基础上,通过分析目前流行的开源框架并借鉴成型的基础框架的设计思路及结合自己的实践经验,运用合适的设计模式和设计原则及基于组件的开发技术完成框架的设计与实现任务。拟采用Spring、Hibernate、BootStrap、Ehcache、Log4j、Shiro、Quartz、JUnit、JSP等相关技术。
1.3 论文的组织结构
本文包括七个章节,组织如下:
第一章:绪论。分析了课题的研究背景与现状,并明确了课题研究的目的和方法。此外,还说明了论文的组织结构。
第二章:框架采用的关键技术。介绍了框架相关知识、几种设计模式与设计原则、基于组件的开发技术及几种成熟的开源框架技术。
第三章:框架的需求分析。分析了企业应用系统共性的功能需求和性能需求提炼为该框架的需求,并针对框架各层次进行需求细化,对框架的设计起到了重要的指导意义。
第四章:框架的设计。通过对框架各层次的开源框架技术进行分析与选择,解决了框架持久层、业务层、控制层及表示层的技术选型及类设计等问题,并对常见问题给出了具体解决方案且对常用的工具类进行了封装设计。
第五章:框架的实现。介绍了框架实现所依赖的开发环境并以一个具体模块为例展示了框架各层次的实现细节。同时展示了基于第三方组件的基础功能的实现过程。
第六章:框架的测试。以框架业务层为例介绍了如何应用Spring测试框架与JUnit实施具有事务回滚功能的单元测试。
第七章:总结与展望。总结了论文的设计、实现与测试工作,分析当前框架的优点与不足之处,并对下一步工作进行了展望。
1.4 本章小结
本章首先分析了市场对Web应用框架的需求,指出了设计和开发Web应用框架的现实意义并介绍了开源框架的优势;然后介绍了课题的研究现状及趋势并明确了该课题的研究目的及方法;最后给出了论文章节的组织结构。

2 框架采用的关键技术
2.1 框架概述
一个框架,就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。另一种常见的定义是:框架是一个可以被应用开发者进行定制的应用软件系统的骨架[12]。框架根据面向的问题领域的不同又分为应用框架、领域框架和支持框架[13]。应用框架封装了各种专门的技术或功能并可应用于不同领域的应用,领域框架为某个特定问题域的实现提供了专门的解决方案和功能,支持框架提供一些与计算机底层相关的特殊服务[13]。本文设计的框架为应用框架,它为Web应用系统提供一个通用的体系结构和一些共同的操作。下文提到的框架专指Web应用框架。
Web应用框架使得我们开发Web应用的速度更快、质量更高、成本更低,利用Web应用框架开发Web应用系统己经成为Web应用开发的一种新方式。
2.1.1 设计原则
为了让框架能够更好的为开发不同领域的应用系统服务,也为了让基于框架的开发者便于开发,框架设计时应该遵循以下原则[14]:
1、为用户提供可扩充自定义配置文件的机制;
2、框架必须具有可扩展性和复用性;
3、提供尽可能多的功能组件;
4、实现性能优化机制;
5、框架必须具有应用集成能力,方便集成各种组件;
6、不断地重构框架;
7、开发者和框架的交互清晰,文档齐全。
2.1.2 开发过程模型
框架的设计策略有自底向上和自顶向下两种方法[15]。
本框架采用自底向上的策略。它从若干个具体的典型企业应用系统中,抽象出相似点来构建应用框架和通用组件,应用框架反过来又应用于不同的企业应用系统,并在解决不同问题的过程中得到更新,通过不断反复迭代框架的设计和实现,需要修改和反复的内容越来越少,框架逐渐趋于成熟,从而形成图2.1的演化模型[16]。

图2.1 框架演化模型
演化模型中每个阶段的任务如下:
1、分析问题领域:分析一类应用而不是单个程序,比较各种不同的软件解决方案,寻求这些方案的共性,这些共性将成为应用框架的基础。
2、应用框架的设计:定义应用框架体系结构并设计,包括设计开发者与应用框架间的交互、给用户提供的最终工具等。
3、应用框架的实现:包括应用框架核心类的实现、应用框架的测试、应用框架的试运行、应用框架的反复更新等。
4、应用框架的部署:包括文档的提供、分发过程,为开发者提供技术支持,维护和更新框架。
2.2 面向对象设计原则与设计模式
面向对象设计原则是面向对象软件设计的经典法则,最基本的设计原则有5条,分别是:单一职责原则、开闭原则、依赖倒置原则、接口隔离原则和Liskov替换原则。遵守它们可以使我们的代码更加鲜活,易于复用,易于扩展,灵活优雅[17]。本框架严格遵守了这5条设计原则,真正达到了“低耦合、高内聚”的设计目标。每条设计原则的核心思想如下:
单一职责原则的核心思想是:一个类,最好只做一件事,只有一个引起它变化的原因,以防代码出现牵一发而动全身的不良局面。

7 总结与展望
7.1 总结
本文顺应基于Web应用框架开发企业应用的趋势,设计并实现了一个适合开发信息管理类系统的高效、稳定、安全、灵活、易于扩展和维护且简单易用的Web应用框架。
完成的具体工作主要有:
1、对当前开源社区提供的Web应用基础框架进行研究,借鉴其优秀的设计思路并发现其存在的不足。通过对业界主流的开源框架进行分析和比较,完成了Spring+Hibernate+Spring JDBC+BootStrap的技术选型并完成了选型后框架的整合工作。整个框架以Spring为核心,通过其IoC容器管理各层的组件及组件间关系,通过Spring JDBC及Spring集成的Hibernate完成持久层的数据访问工作,通过Spring AOP实现业务逻辑和横切逻辑的分离,通过Spring内置的MVC框架实现请求的处理,通过BootStrap实现页面的展示。各层框架技术各司其职,协同工作,为实现企业应用系统搭建了一个基础骨架。
2、通过对企业应用系统进行分类分析,提炼出共性需求,实现了用户管理、角色管理、菜单管理、区域管理及机构管理等系统级功能。通过Spring AOP技术实现了可插拔的基础服务,如:事务管理服务、缓存服务、安全服务、日志服务等。
3、通过运用经典的设计模式、面向对象设计原则及基于组件的开发技术,完成了框架各层的设计、实现及测试任务,实现了框架的设计目标,降低了开发成本,保证了框架质量。
4、设计了通用DAO接口,对常用的数据访问操作进行了封装,极大的简化了持久层的工作量。为各功能模块设计了外观一致、风格美观、精致友好的用户界面解决方案。
7.2 展望
由于开发时间有限,框架提供的基础功能还不丰富,如没有引入邮件发送、信息发布、工作流、报表打印、文件管理等通用基础功能,希望在日后增加对这些功能的支持。
此框架需要应用到不同类型的企业应用系统中进行实践的考验,因此该框架的设计及实现工作并没有结束,应用之后还需要重构框架的实现代码,甚至重构框架的设计以不断提高框架的质量从而真正在商业开发中推广开来。

原创文章,作者:Editor,如若转载,请注明出处:http://www.diyilunwen.com/lwfw/dzsw/849.html

(0)
EditorEditor
上一篇 2014年10月11日
下一篇 2014年10月11日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注