本栏目责任编辑:闻翔军数据库与信息管理Computer Knowledge and Technology 电脑知识
与技术第6卷第10期(2010年4月)基于开源框架的内容管理系统
黄道斌,尹荣章,叶明全,朱金好
(皖南医学院计算机教研室,安徽芜湖241000)
摘要:该文介绍了一个基于J2EE 开源框架设计的内容管理系统,针对内容管理系统的可维护性和良好的扩展性问题,讨论了Struts 、Spring 、Hibernate 等开源技术在解决这些问题的重要作用。
关键词:设计模式;MVC ;CMS
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2010)10-2332-02
Based on Open Source Framework's Content Management System
HUANG Dao-bin,YIN Rong-zhang,YE Ming-quan,ZHU Jin-hao
(Department of Computer,Wannan Medical College,Wuhu 241000,China)
Abstract:This paper describes a content management system which is based on J2EE open-source framework.We discusses the Struts,Spring,Hibernate and other open source technologies to solve these problems that the maintainability and good scalability of Content man -agement system played an important role.
Key words:design patterns;MVC;CMS
现在的很多大型的门户网站,都是在靠系统维护人员手工在更新和修改系统页面,如果想进行网站内容管理,面对千变万化的信息流,没有好的后台系统支持,工作量将是十分巨大的,如果有一个好的后台系统来帮助维护人员提高效率,那将节省大量的人力物力,同时将系统维护的出错率降到最低。要实现这样一个系统一般至少要包含两大部分:后台业务子系统,主要用于内容的管理,新闻录入,论坛子系统、权限管理等等;另外一个就是前台系统。一般从头开发一个内容管理系统,开销非常大,本文提出一个基于开源技术的解决方案,所谓开源技术就是一些软件开发组织开发的一些软件,公开源代码,你可以在他们工作的基础上做少量的修改或做二次开发,从而定制我们一个完整的系统,目前在J2EE 技术平台上就有一些比较成熟的开源框架技术,比如Struts,Spring,Hibernate 等,用这些框架构建我们的软件系统成本开销低,开发效率高。本文首先介绍有关开源框架技术,同时给出这些开源技术中用到的一些有些设计模式[1],然后根据我们的设计目标,给出了内容管理系统的系统架构,最后就整个系统的优缺点做一个讨论。1开源技术简介
Struts 是目前Web 开发中比较成熟的一种表现层的开源框架,它采用了MVC 经典设计模式,被大量J2EE 开发人员所接受。它对Servlet 、JSP 、JavaBean 等进行了封装,通过用户定义逻辑之间的跳转,实现页面信息的流转,而且用户自定义标签简化了数据表现的代码,为Web 开发提供了具有高可配置性的MVC 开发模式,它将Model 、View 和Controller 分别映射到Web 应用中的组件。Model 由Action 来构建,其本质是在这里调用业务逻辑接口,并不是所有业务逻辑在这里实现,View 是由JSP 和struts 提供的自定义标签来实现,Controller 负责控制流程,由ActionServlet 和ActionMapping 来完成[2]。
Spring 是一个流行的开源轻型容器(light-weight container),其最核心概念是Bean 工厂(Bean Factory),它能够很方便的配置、装配JAVABEAN 和普通的java 对象,通过IOC 容器和依赖注入技术无缝的将各个协同工作的业务逻辑对象整合在一起。而且Spring 提供了AOP (Aspect-Oriented Programming,面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;DAO/ORM 的实现方便我们进行数据库的开发;Web MVC 和Spring Web 提供了Java Web 应用的框架或与其他流行的Web 框架进行集成[5]。
Hibernate 是一个免费的实现了ORM 的开源Java 包,是java 应用程序和关系数据库之间的桥梁。负责java 对象和关系数据之间的映射,其内部封装了JDBC 访问数据库的细节,它使得与关系数据库打交道变得十分轻松,向业务层提供了面向对象的数据访问API [6]。
2设计模式与IOC
设计模式是在多个项目中总结出来成熟的针对具体问题所提出的解决方案,由于在实际项目中反复检验,可以在后续的项目中结合具体情况选择并重用。设计模式在面向对象开发领域现在已经是一个非常热门的技术,总的可以分为三大类:创建型,主要与对象的创建有关;结构型,用于解决多个对象之间如何构建复合对象的方法;行为型[1]。在我们前面刚刚介绍的几种开源框架中,采用了我们三大类型设计模式中的多种,如著名的MVC 模式。
控制反转(Ioc )是Spring 框架的核心技术,其本质是减少业务组件之间的依赖性和耦合性。在传统的方式中,我们要调用其他业务类来协同工作,需要在代码中编写相应的代码来查和定位相关类,由于是硬编码,测试和以后业务变更修改变动相当大,不利于开发收稿日期:2010-01-19
作者简介:黄道斌(1981-),男,安徽芜湖人,硕士,皖南医学院,主要研究方向为软件工程、信息安全、软件项目管理。
ISSN 1009-3044Computer Knowledge and Technology 电脑知识与技术Vol.6,No.10,April 2010,pp.2332-2333E-mail:jslt@cccc www.dnzs Tel:+86-551-569096356909642332
数据库与信息管理本栏目责任编辑:闻翔军Computer Knowledge and Technology 电脑知识与技术第6
卷第10期(2010年4月)和维护。控制反转(Ioc )就是把类之间的关联交由容器来完成,其实整个容器就相当于一个工厂,每个类需要什么都不需要自己动手去,而是通过注入技术来完成相关类之间的依赖关系,因此采用Ioc 技术非常适合实施针对接口编程,在业务类中声明依赖对象只须用接口的方式,而任何实现了该接口的类都可以相互替换,只须在相应的配置文件中声明即可,非常利于代码维护和系统扩展。3系统架构
在前面介绍的基础上,我们针对内容管理系统的可维护性和良好的扩展性,给出我们的设计目标,具体的设计实现,以及对整个设计的分析。
3.1系统设计目标
传统的J2EE 架构方案过于复杂,在J2EE 平台中由于其复杂的应用程序和整体性能的低下,特别是软件开发,测试维护成本是相当的高,因此我们采用一种轻量级的解决方案。在开源框架领域有一个已经被很多J2EE 平台开发者所接受的就是Spring 技术,它支持控制反转(IOC )和AOP 编程,我们就是通过SPRING 技术来整合其他开源技术达到我们整个系统的目标要求:采用多层设计,并且每一层之间的扩展以及可替换性要很灵活,这利于以后整个系统的升级和维护;实现业务逻辑的代码必需与表现层的代码分开;业务层的数据整合可配置性需要灵活,方便系统扩展;对于数据保存方面,能够方面的整合来源不同的数据源。
3.2系统设计
根据前面的有关系统的目标分析,我们结合各个开源框架的技术特点,把整个系
统的设计方案实现如图1所示。
如图1所示,整个系统分为四层,数据表现层,业务逻辑层,数据持久层和数据
库。下面我们就结合上述分层,具体来看看每一层开源框架是怎么协调工作的。
数据表现层,在这一层里面,可以选择的开源框架很多,我们这里选择的是
Struts,它是一个基于MVC 设计模式的框架,通过XML 格式的配置文件,很容易实现
各个不同页面间的导航,但其最优秀的地方在于其是基于MVC 设计模式,结构清晰,
使开发者只关注如何在Action 中如何从业务层中获取自己所需要的业务数据,其他
内部的流转控制全部交由Struts 来完成。
业务层是整个架构中最为核心的层次,它为表现层提供所需要的数据,具体的业
务逻辑在这层实现,同时它也负责整合来自不同的数据源。采用Spring 框架主要基于
如下一些方面考虑:与表现层很好的分离,为表现层提供所有需要的数据,同时能够
为不同的客户增加不同的表现层,在Spring 框架中我们用接口的形式提供服务,所以
扩展很灵活,而且表现层的修改也不会或者很少改变业务层;降低系统的复杂性,整个系统的复杂性只与需求业务流程的复杂程度相关,不能像EJB 开发模式那么复杂;对于底层数据访问技术,采用较为高级的访问方式,采用O/R 框架来完成,把尽可能多的精力放在业务逻辑上,spring 在集成O/R 框架方面做的非常优秀,可以与不同的O/R 框架集成;spring 框架是一个轻量级的容器,其本质就是一个IoC 容
器,利用这个特性,容器中的业务类就不用自己动手查资源和所依赖的对象了,而是通过声明的方式,交由容器帮其去查和加载,这样做的方式优点非常多,首先就是不必在业务类中通过硬编码的方式指定与其相关的对象,利于实现针对接口编程,以后扩展和修改非常方便,其次是利于测试开发,传统的EJB 方式,由于其依赖环境复杂,很难实施测试,而采用spring 方式则大大不同,非常容易测试,利于提高代码质量。
在数据持久层,我们没有采用JDBC 方式来访问数据库,而是采用的是Hibernate 数据持久化框架,主要考虑到在大量的业务逻辑里面嵌入SQL 语句,将给以后的维护工作带来很大的困难,而且编程效率太低,因此需要采用一种能够将我们的实体对象与表数据进行相互映射的技术,来屏蔽底层的数据访问细节,也就是说在业务逻辑类中只对我们的数据类对象进行操作,如何将对象转换为表中数据交由Hibernate 来完成,这将大大降低开发难度,提高开发效率,同时采用相应的数据缓存技术,通过其底层的机制保证缓存中数据与数据库中的保持同步。
3.3系统设计分析
针对我们的设计目标,我们提出了多层的解决方案,在表现层采用的是目前最为成熟的开发框架Struts,业务层为Spring 框架,数据持久层采用的是Hibernate 。这个设计的核心在于业务层的Spring 框架,它能够很好的与表现层集成,对Hibernate 的支持也非常的出,整个系统设计在开发实施以及将来的扩展维护都非常容易。
4总结
本文在提出了一个内容管理系统的设计方案,针对项目开发成本开销,软件的可维护,可扩展等方面的原因,提出了一个基于开源框架的多层设计方案,同时就具体的框架技术在项目中的每个层次中的作用做了详细分析,是一个值得采用的方案。参考文献:
[1]
阎宏.Java 与模式[M].北京:电子工业出版,2002.[2]
孙卫琴.精通Struts :基于MVC 的Java Web 设计与开发[M].北京:电子工业出版社,2004.[3]
Alur D.J2EE 核心模式[M].北京:机械工业出版社,2005.[4]
约翰逊.Spring 框架高级编程[M].蒋培,译.北京:机械工业出版社,2006.[5]
spring framework是什么框架的约翰逊.Expert one-on-one J2EE Design and Development[M].魏海萍,译.北京:电子工业出版社,2003.[6]艾里特.精通Hibernate[M].刘平利,译.北京:机械工业出版社,2009.
图1
2333
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论