基于JAVAEE网站内容管理系统的架构设计
2012-08-14王海燕
王海燕,吴 洁
(1.商丘师范学院 计算机与信息技术学院,河南 商丘 476000;2.河南信息工程学校 河南 郑州 450000)
随着Internet的丰富和发展,促成了数字化信息内容的迅速成长。但同时很多网站却不能迅速跟进大量信息衍生及业务模式变革的脚步,尤其是遇到网站扩充或整合的时候,需要花费很多时间和精力去更新信息,人们的工作变得异常复杂,而网站内容管理系统的出现有效的解决了这个问题。这里我们对内容管理系统的现状和存在的问题进行了阐述,并给出了架构设计。
1 课题背景及意义
处在科技高速发展的时代,网络技术给人们的生活和工作带来了深刻的变革,信息化、网络化、数字化正渗透到社会的各个角落,企业对于通过互联网来收集、处理和传递数据的依赖性越来越强。面对越来越大的信息处理量,我们也面临着许多问题,如建站困难、大量信息堆积及信息更新不及时,服务功能不健全、手工处理效率低下、发布的信息无时效价值;改版工作量大,系统的扩展能力差等。
对于上述问题,如何来有效管理各种数据信息和维护这些信息内容,全面提升管理水平,真正达到快捷、准确、实时的发布信息,解决用户网站建设与信息发布中常见的问题,以适应各级企业不断增长的需求,就成为一个耗费人力、物力、时间的工作,基于这样的目的,一套专业的网站内容管理系统应运而生。
新一代的内容管理平台的发展应着重以下几个方面:
1)强健的架构、良好的集成扩展性,方便进行维护和管理
新一代的内容管理系统必须基于优良稳定的体系结构,具有更高的安全性,易于集成和功能的扩展,可以提供方便的管理维护功能或工具,并可以快速部署[1]。
2)系统管理和内容业务分离,更强的业务独立性和灵活性
网站内容管理的复杂度和灵活性要大大高于一般的业务系统,因此网站内容管理必须能够提供更强的业务独立性和灵活性[2]。
3)表现和内容分离,用户体验和内容质量的和谐统一
内容表现和内容本身需要尽可能的独立,用户无需过多的关注内容表现形式的制作,由系统提供预设可选的模板来展现内容[3]。
2 系统架构设计
该内容管理系统使用了标准的三层体系结构,在框架设计中需要考虑很多问题:怎样建立用户接口;在哪里处理业务逻辑;怎样持久化数据;怎样设计能松散耦合还能灵活改变,应用程序如何做各种级别的业务处理。为了使系统的各个应用层保持一致,让每个层在一种松散耦合的方式彼此作用而不用考虑低层的技术细节,为此选择一个主流技术架构Struts2+freemarker+Spring2+Hibernate3,将应用功能分成表现层、逻辑层和数据层,Struts2+freemarker主要是解决表现层的问题,Spring主要是解决应用逻辑层问题。Hibernate主要是解决数据库持久的问题。系统完整的处理过程如图1所示。
图1 三层架构处理过程Fig.1 Three layer software architecture
这是一种先进的协同应用程序开发模型,各层是逻辑的,而不是实际的物理上的,这种三层架构具有很多优势:
1)安全性
通过应用三层结构,使中间逻辑应用层和前台界面、后台数据库分开。利用功能层有效地隔离开表示层和数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段非法地访问数据层,这就为严格的安全管理奠定了坚实的基础,整个系统的管理层次也更加合理和可控制[4]。
2)便于升级、维护
三层结构技术是一个基于组件的开发模式,是根据业务涉及的数据和处理流程、不同的行业特性设计成属性、方法并独立封装,使业务工作对象化。当用户需求发生变化时,只要修改相应的对象就可以了。
3)独立性
合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性[5]。
在该内容关系系统中,第一层是表示层,作为应用的用户接口部分,它担负着用户与应用间的对话功能。中间逻辑层由功能对象和应用逻辑组成。它提供定义良好的接口,使表示层可以方便地存取数据,从而适应于服务中的各种请求,第三层是数据层,封装了对数据库的访问功能。
2.1 表现层设计
文中内容管理系统的视图层提供给用户视觉上的界面,负责面向最终用户的信息发布,与用户进行交互。用户输入的信息通过该层传输给逻辑层,并负责逻辑层提取数据呈现给用户。Struts2可以非常简单地使用FreeMarker模板作为视图技术,对于传统的JSP页面而言,FreeMarker是一个绝佳的替代方案。
展示数据的实现过程是:由java程序准备好要显示的数据,由FreeMarker生成页面[6],通过模板显示准备的数据如图2所示。
图2 Freemarker流程图Fig.2 Freemarker flow chart
为了在Struts2应用中使用FreeMarker模板技术,我们需要在Struts.xml文件中进行配置。虽然FreeMarker自己提供了一些FTL指令,可以对数据模型中的数据进行迭代输出,也提供了一定的条件判断能力。但Struts2提供的标签远不止于此,它还提供了一系列的表现标签,例如form标签等。因此,还是需要在FreeMarker模板中使用Strut2标签.
2.2 业务逻辑层的设计
在内容管理系统的持久层的上方是业务逻辑层,在该层中主要负责企业信息内容的业务管理,包括栏目、新闻信息等。
业务逻辑层在代码中主要体现在Service层,Service层大多时候都是简单的调用DAO里面的方法,但没有它又不行,因为有些复杂的业务逻辑就需要在Service层完成,否则易造成业务代码和底层的代码混乱,对以后功能的修改带来灾难性的影响,而且Service层也是Spring实现事务控制的地方。
Service层设计的时候首先需要对上层使用到的对象定义一系列接口,所有与业务层有交互的代码都应该通过这些接口实现。对于由Spring负责管理的对象,可以通过依赖注入加以实现。在Service层还不得不提到的一点就是 Spring处理的事务管理,Spring提供两种事务处理的方法:声明式事务和编程式事务。声明式事务是借助于Spring AOP模块来实现,是系统级的事务管理,在内容管理系统开发中也用到了该事务管理方法.另外在内容管理系统设计时还要额外注意事务边界的划分,例如在处理声明式事务管理功能时,那就需要将事务控制在方法层面,这样可以将多次的调用封装在同一个事务之中.使用 Spring的声明式事务管理,业务接口的方法就是事务的边界。
2.3 数据库持久层的设计
数据库持久层的设计目标是为整个项目提供一个高层、统一、安全和并发的层设计的好坏很大程度上决定了是否能完成该项目。此时可以考虑采用数据持久层框架,本项目采用了Hibernate,它提供了数据访问方法,能够使其它程序数据持久机制,程序员避免手工编写程序访问数据持久层,使其专注于业务逻辑的开发,并且能够在不同项目中重用映射框架,大大简化了数据增、删、改、查等功能的开发过程,同时又不丧失多层结构的天然优势,集成延续JAVAEE特有的可伸缩性和可扩展性[6]。
3 结束语
内容管理系统数据库表主要包含:用户信息部分、权限部分、模板部分。在设计数据库表时要遵守规范式的设计要求,已达到数据库表设计的合理化。同时为了保证数据库的一致性和完整性,要为数据库表设计相应的关键字、识别、缺省等信息。Struts+Spring+Hibernate,实现了系统层次的松散耦合,框架把业务逻辑和持久性逻辑分开能减轻了开发人员从头构建持久层代码的精力,从而集中精力来处理逻辑问题,分层的另一大好处是,对日后系统的升级和维护带来很大的好处。在分层的基础上进一步实现是下一步的目标。
[1]熊文,方亮,张淑芳.三层web体系结构的特点与比较[J].计算机应用与研究,2006:61-63.XIONG Wen,FANG Liang,ZHANG Shu-fang.The characteristics and comparation of the three-tier web architecture[J].Application Research of Computers,2006:61-63.
[2]李发英,朱海滨.基于Struts+Hibernate的Web应用的设计与实现[J].计算机技术与发展,2009(4):91-94.LI Fa-ying,ZHU Hai-bin.Design and implementation of Web applications based on Struts+Hibernate[J].Technology and Development of Computers,2009(4):91-94.
[3]李邵平,彭志平.一种Web应用框架及其实现[J].计算机技术与发展,2009(8):117-119.LI Shao-ping,PENG Zhi-ping.An implementation of the Web application framework[J].Technology and Development of Computers,2009(8):117-119
[4]潘春华,李悦,唐茂元.基于Spring框架的北京林业大学图书馆门户系统设计与实现[J].现代情报,2008(4):169-172.PAN Chun-hua,LI Yue,TANG Mao-yuan.The library portal system design and implementation of the Beijing Forestry University based on the spring framework[J].Modern Information,2008(4):169-172.
[5]徐博艺,姜丽红,董理.一种基于J2EE的软件架构的研究与应用[J].计算机应用研究,2006,23(9):146-148 XU Bo-yi,JIANG Li-hong,DONG Li.Research and application of a kind of software architecture based on J2EE[J].Application Research of Computers,2006,23(9):146-148.
[6]JIANG Zi-jing.The analysis and design of the content management system based on J2EE[EB/OL].(2009)http://www.dco88.com/p-199579990680.html