论文部分内容阅读
【摘 要】WSHCF就是一个构建于多个应用框架(如Spring,Wicket和Hibernate)之上的框架,对软件开发有重要的意义。本文对WSHCF的设计思想及设计目标进行分析,介绍WSHCF的设计思想,选取并分析实现WSHCF所需的相关基础技术。
【关键词】Web应用 J2EE 框架 MVC
一、引言
目前,在应用软件框架方面,已有深入详细的研究。又因为开放源代码的迅速发展,基于J2EE系统的WEB应用框架不断被开发,包括基于MVC的Struts、Wicket、Webwork,处理持久层的Hibernate、Ibatis以及为Spring所有层面服务等等。因为应用框架很多,且品质差异较大,怎样复用的问题便显得尤为重要。针对此类问题,最好的方法便是松耦合最优的框架,为构建更通用的框架做准备,向上层屏蔽各种问题,包括功能冗余以及层间通信等等,进而提供给应用程序开发者以及界面设计师统一透明的开发平台。其中,此通用框架便指的是WSHCF,它构建于多种应用框架(包含Spring,Wicket和Hibernate)之上。通用型WSHCF框架的意义包括以下几个方面:
(一)目前,WSHCF已经结合了专业化系统结构的设计方案,这些设计可以简单地被复用,集中精力在特殊应用上;
(二)因为层间松耦合的实现,以WSHCF为基础开发的应用便较易于理解、测试及维护,提高了应用的可扩展性及可维护性。
(三)便于层间通信,提供出基本的公共功能,缩短了开发的时间、减少了重复开发、提高了软件的生产率、降低了开发的成本等等。WSHCF通用框架的最终目标就是增强软件的生产率。
二、设计思想
(一)分层设计
不管是三层设计还是多层设计,最终目的便是分离应用逻辑、前端表现及数据存储,经清晰灵活的组件式开发以及策略的部署,加强企业在应用上的伸缩性及灵活性等等。以分层设计为基础也是WSHCF的总体思想。
(二)组件编程
在设计大规模软件的时候,就理应要求模块化了,模块间相互依存的关系应保证稳定且松耦合,也就是组件设计的中心指导思想。
选用Wicket而不是Struts作为WSHCF的表现层框架就是因为Wicket是完全面向组件的。Wicket将一个应用程序分成很多个页面,而一个页面又是由若干组件组成的,不需要去关心任何Servlet细节,也不需要关心如何生成URL和URL的结构,Wicket会自动生成合适的URL跳转页面或者传递参数。
(三)控制反转的IOC
此类编程需要面向组件,属于架构技术的应用,最关键的问题便是怎样解决组件间的依赖性。相应的机制便是控制反转(或者IOC),即能够解决这一问题的方案。WSHCF借助 Spring IOC功能来实现各个组件之间的自动装配。
(四)面向方面的编程AOP
面向方面的编程AOP(Aspect-Oriented Programming)以另一角度来看的程序结构,它的目标便是完善面向对象的编程(即OOP)。它可以分解应用程序成为多个层次,相应地,AOP可以分解程序到各方面。将事务管理等模块化。对于Spring来讲,其关键组件便是AOP框架。另外,Spring 的IOC容器不依赖AOP,当没有必要的时候,可以不使用AOP,另外,Spring IOC的完善,有效地解决了中间件的问题。
三、WSHCF的设计目标
WSHCF的目标就是要成为一种企业级应用的基础框架,即一个通用框架,或者是一个通用的开发平台。从技术的角度看,它构建于操作系统、关系数据库、基础开发语言(Java)之上而处于具体应用系统之下,从用户(参与者)的角度来看,它处于应用系统开发者和(操作系统、网络、数据库)系统管理者之间。对于框架架构师(Framework Architect)而言,主要从技术角度来考虑WSHCF所要实现的目标。考虑到WSHCF如何为用户界面设计师(User interface Designer)以及业务逻辑工程师提供便利,这样便可以实现企业系统应用的开发。
(一)自动生成及管理域对象层
对于软件架构来讲,设计域对象层往往会被忽略。通常,域对象层作为数据持久化操作的载体,面向应用系统开发的起点,依赖于底层数据库的设计而存在。对于WSHCF而言,域对象层一般包括两方面:域对象模型以及对象-关系文件。通常地,域对象符合规范化的JavaBeans,但一般而言,对象映射-文件的类型是XML。人工编写具有明显的缺陷,不仅编码量多,还易出错。在系统构架建设的前期,持久层以及业务逻辑应用域模型及对象关系文件作为基础,需通过自动统一的机制来生成和管理它们。
(二)对象持久化
所谓对象持久化,指的是在设计数据持久层的时候需要充分考虑的问题。当J2EE应用系统的结构具有多层的时候,构建持久层框架意义重大:使得持久层能够封装访问数据库的各种类,提供简易的CRUD接口;将实现机制隐藏起来,不需对数据存储的细节深入了解就能够精于业务领域。换句话说,数据持久层为整个应用系统提供了统一灵活的机制。完善的持久层需具备以下方面:
1.可以提供出持久化的编程接口。也就是说,可以经一种接口提供给上层调用CRUD 操作,避免了手工编写的出错风险。
2.尽可能地减少数据访问的瓶颈。数据访问决定了系统的整体性能,应用到Web当中的时候,应用系统的瓶颈来源于磁盘IO以及网络IO,需要持久层来提供相应的机制尽可能地减少应用性能瓶颈的发生。
3.可以支持各种数据库的平台。这样底层数据库便不会影响持久层的实现;与此同时,还课可以支持数据库的专有性(包括Oracle处理大对象的问题)。
(三)各层间的数据转换
所谓数据转换,指的是转换来自不同层次的数据[6]。通常,较为典型的需求包括:把由关系数据库当中的记录转换成持久对象,把持久对象转换成表现层的值对象,其中,需要确保数据的准确性及完整性。所以,通用框架需能够提供出相应的数据转换机制。
(四)异常处理模型
处理异常情况是应用程序中非常重要的方面,合理划分异常层次既对程序的执行有利,还为程序调试提供了依据。然而,不应暴露给客户异常信号,将责任推给客户。基于架构的角度,需要通用框架提供出某种可行的机制:保证产生代码混乱的几率最小,还应充分捕捉到异常信息中的诊断信号(一般地,这种情况需设计专门的层次,例如,设计专门用于业务逻辑服务的ServiceException类,用于数据存取的DaoAccessException类等等),保证原始异常信息的完整性。
(五)辅助工具库
通常地,应用系统中会有一些同业务逻辑关系不密切的需求,包括对字符串处理的需求;对显示日期格式的需求;文件处理的需求等等,为避免常用需求代码的随意散布,需要一个公用的且易扩展的工具库。
四、结束语
J2EE作为一种流行的企业级应用系统开发平台,为开发人员提供了强大的技术支持和开发平台。利用目前应用比较广泛的开源J2EE开发框架,把J2EE各个层次上的开发框架通过集成,建设成一个通用的J2EE开发底层平台,使得能够在此基础上快速的开发具体的应用系统,使得项目开发工作顺利高效的进行。通过把SpringFramework,Hibernate,Tapestry这三个位于J2EE架构不同层次上的开发框架集成到一起,发挥其各自独特的优势,建设成一个通用的J2EE基础平台,并在此基础上开发出具体的应用项目。
参考文献:
[1](美)Rod Johnson, Juergen Hoeller(等著),蒋培(译).Spring框架高级编程[M].北京:机械工业出版社,2007.1-27,85-160.
[2]Rod Johnson.J2EE Development Frameworks.Computer Science 2005,1(38):102-115.
【关键词】Web应用 J2EE 框架 MVC
一、引言
目前,在应用软件框架方面,已有深入详细的研究。又因为开放源代码的迅速发展,基于J2EE系统的WEB应用框架不断被开发,包括基于MVC的Struts、Wicket、Webwork,处理持久层的Hibernate、Ibatis以及为Spring所有层面服务等等。因为应用框架很多,且品质差异较大,怎样复用的问题便显得尤为重要。针对此类问题,最好的方法便是松耦合最优的框架,为构建更通用的框架做准备,向上层屏蔽各种问题,包括功能冗余以及层间通信等等,进而提供给应用程序开发者以及界面设计师统一透明的开发平台。其中,此通用框架便指的是WSHCF,它构建于多种应用框架(包含Spring,Wicket和Hibernate)之上。通用型WSHCF框架的意义包括以下几个方面:
(一)目前,WSHCF已经结合了专业化系统结构的设计方案,这些设计可以简单地被复用,集中精力在特殊应用上;
(二)因为层间松耦合的实现,以WSHCF为基础开发的应用便较易于理解、测试及维护,提高了应用的可扩展性及可维护性。
(三)便于层间通信,提供出基本的公共功能,缩短了开发的时间、减少了重复开发、提高了软件的生产率、降低了开发的成本等等。WSHCF通用框架的最终目标就是增强软件的生产率。
二、设计思想
(一)分层设计
不管是三层设计还是多层设计,最终目的便是分离应用逻辑、前端表现及数据存储,经清晰灵活的组件式开发以及策略的部署,加强企业在应用上的伸缩性及灵活性等等。以分层设计为基础也是WSHCF的总体思想。
(二)组件编程
在设计大规模软件的时候,就理应要求模块化了,模块间相互依存的关系应保证稳定且松耦合,也就是组件设计的中心指导思想。
选用Wicket而不是Struts作为WSHCF的表现层框架就是因为Wicket是完全面向组件的。Wicket将一个应用程序分成很多个页面,而一个页面又是由若干组件组成的,不需要去关心任何Servlet细节,也不需要关心如何生成URL和URL的结构,Wicket会自动生成合适的URL跳转页面或者传递参数。
(三)控制反转的IOC
此类编程需要面向组件,属于架构技术的应用,最关键的问题便是怎样解决组件间的依赖性。相应的机制便是控制反转(或者IOC),即能够解决这一问题的方案。WSHCF借助 Spring IOC功能来实现各个组件之间的自动装配。
(四)面向方面的编程AOP
面向方面的编程AOP(Aspect-Oriented Programming)以另一角度来看的程序结构,它的目标便是完善面向对象的编程(即OOP)。它可以分解应用程序成为多个层次,相应地,AOP可以分解程序到各方面。将事务管理等模块化。对于Spring来讲,其关键组件便是AOP框架。另外,Spring 的IOC容器不依赖AOP,当没有必要的时候,可以不使用AOP,另外,Spring IOC的完善,有效地解决了中间件的问题。
三、WSHCF的设计目标
WSHCF的目标就是要成为一种企业级应用的基础框架,即一个通用框架,或者是一个通用的开发平台。从技术的角度看,它构建于操作系统、关系数据库、基础开发语言(Java)之上而处于具体应用系统之下,从用户(参与者)的角度来看,它处于应用系统开发者和(操作系统、网络、数据库)系统管理者之间。对于框架架构师(Framework Architect)而言,主要从技术角度来考虑WSHCF所要实现的目标。考虑到WSHCF如何为用户界面设计师(User interface Designer)以及业务逻辑工程师提供便利,这样便可以实现企业系统应用的开发。
(一)自动生成及管理域对象层
对于软件架构来讲,设计域对象层往往会被忽略。通常,域对象层作为数据持久化操作的载体,面向应用系统开发的起点,依赖于底层数据库的设计而存在。对于WSHCF而言,域对象层一般包括两方面:域对象模型以及对象-关系文件。通常地,域对象符合规范化的JavaBeans,但一般而言,对象映射-文件的类型是XML。人工编写具有明显的缺陷,不仅编码量多,还易出错。在系统构架建设的前期,持久层以及业务逻辑应用域模型及对象关系文件作为基础,需通过自动统一的机制来生成和管理它们。
(二)对象持久化
所谓对象持久化,指的是在设计数据持久层的时候需要充分考虑的问题。当J2EE应用系统的结构具有多层的时候,构建持久层框架意义重大:使得持久层能够封装访问数据库的各种类,提供简易的CRUD接口;将实现机制隐藏起来,不需对数据存储的细节深入了解就能够精于业务领域。换句话说,数据持久层为整个应用系统提供了统一灵活的机制。完善的持久层需具备以下方面:
1.可以提供出持久化的编程接口。也就是说,可以经一种接口提供给上层调用CRUD 操作,避免了手工编写的出错风险。
2.尽可能地减少数据访问的瓶颈。数据访问决定了系统的整体性能,应用到Web当中的时候,应用系统的瓶颈来源于磁盘IO以及网络IO,需要持久层来提供相应的机制尽可能地减少应用性能瓶颈的发生。
3.可以支持各种数据库的平台。这样底层数据库便不会影响持久层的实现;与此同时,还课可以支持数据库的专有性(包括Oracle处理大对象的问题)。
(三)各层间的数据转换
所谓数据转换,指的是转换来自不同层次的数据[6]。通常,较为典型的需求包括:把由关系数据库当中的记录转换成持久对象,把持久对象转换成表现层的值对象,其中,需要确保数据的准确性及完整性。所以,通用框架需能够提供出相应的数据转换机制。
(四)异常处理模型
处理异常情况是应用程序中非常重要的方面,合理划分异常层次既对程序的执行有利,还为程序调试提供了依据。然而,不应暴露给客户异常信号,将责任推给客户。基于架构的角度,需要通用框架提供出某种可行的机制:保证产生代码混乱的几率最小,还应充分捕捉到异常信息中的诊断信号(一般地,这种情况需设计专门的层次,例如,设计专门用于业务逻辑服务的ServiceException类,用于数据存取的DaoAccessException类等等),保证原始异常信息的完整性。
(五)辅助工具库
通常地,应用系统中会有一些同业务逻辑关系不密切的需求,包括对字符串处理的需求;对显示日期格式的需求;文件处理的需求等等,为避免常用需求代码的随意散布,需要一个公用的且易扩展的工具库。
四、结束语
J2EE作为一种流行的企业级应用系统开发平台,为开发人员提供了强大的技术支持和开发平台。利用目前应用比较广泛的开源J2EE开发框架,把J2EE各个层次上的开发框架通过集成,建设成一个通用的J2EE开发底层平台,使得能够在此基础上快速的开发具体的应用系统,使得项目开发工作顺利高效的进行。通过把SpringFramework,Hibernate,Tapestry这三个位于J2EE架构不同层次上的开发框架集成到一起,发挥其各自独特的优势,建设成一个通用的J2EE基础平台,并在此基础上开发出具体的应用项目。
参考文献:
[1](美)Rod Johnson, Juergen Hoeller(等著),蒋培(译).Spring框架高级编程[M].北京:机械工业出版社,2007.1-27,85-160.
[2]Rod Johnson.J2EE Development Frameworks.Computer Science 2005,1(38):102-115.