APP下载

基于SSH框架的远程教学平台的实现

2010-12-07刘英哲

中国远程教育 2010年17期
关键词:远程教学配置文件代码

□ 刘英哲

基于SSH框架的远程教学平台的实现

□ 刘英哲

本文介绍了目前主流远程教学平台存在的缺陷,并提出了以SSH框架技术为支撑构架远程教学平台的设计方案。平台系统在设计开发过程中使用了Maven进行项目管理,降低了系统各个模块之间的耦合度,使得代码的复用性大大提高,同时增强了系统的稳定性和可扩展性。

远程教学平台;Spring;Hibernate;Maven

一、引言

随着信息技术特别是网络技术和多媒体技术的发展,我国远程教育发展已经进入了新的历史时期。构建灵活开放的终身教育体系,大力发展现代远程教育,建设以卫星、电视和互联网等为载体的远程开放继续教育及公共服务平台[1],已经成为未来十年远程教育发展的奋斗目标。作为远程教育主要载体的远程教学平台因其设计上的缺陷而暴露出越来越多的问题,主要体现在三个方面:首先是教学平台系统响应速度较慢;其次是系统的界面较为单一,用户缺乏学习兴趣,导致访问量降低;第三是系统在软件设计上结构较为简单,各个部分代码耦合性较强。这些实际存在的问题制约了当前远程教育的快速发展。

二、远程教学平台设计缺陷成因分析

目前,数以千万计的用户正借助网络手段进行远程学习。而随着用户数量的增加,教学平台的并发访问数也不断攀升,这就导致单位时间内需要同时处理的业务数量大幅度增加,因此要求教学平台有更快的处理速度。分析表明,网络程序处理速度的快慢主要依赖于数据库访问层部分,因为数据库的访问是一个较为复杂的流程,首先需要建立到数据库的连接,然后提供用户名密码等待数据库认证,认证成功后,要发送SQL语句等待数据库语法校验,成功后数据库将符合要求的数据返回给网络程序,最后还需要关闭数据库的连接。因此,如何降低数据库访问次数成为网络程序需要解决的关键问题。目前的主要解决方案有两种:第一种就是建立集群,提高数据库服务器的处理性能。这种方案的优点是实行简单,程序不需要修改大段的代码,只要设置好数据库的负载均衡就能够完成。然而这种方案的缺点就是造价较高,需要耗费大量的资金。第二种方案就是在网络程序的数据访问层加上数据库访问缓存,将对数据库访问的结果缓存在内存中,程序在需要数据的时候首先访问缓存,如果有相应的数据就不再连接数据库,避免不必要的开销。这个方案从根本上减少了数据库访问的次数,不需耗费额外资金,同样可以达到提升系统处理速度的目的。

作为教学平台组成部分的界面设计也是评估系统性能重要指标之一。近年来各个网页浏览器之间的标准逐渐统一,综合使用CSS+HTML+JavaScript的XHTML技术逐渐流行,浏览器标准中对文档对象模型的支持还有异步加载XML的XMLHttpRequest对象使得异步加载网页成为了可能,同时减少了服务器和浏览器之间的通讯量,使程序依旧能维持原来的功能。

目前教学平台的后台代码设计中经常掺杂着各种逻辑业务的控制逻辑甚至是直接访问数据库的语句,这也是系统整体性能下降的因素之一。复杂的逻辑设计使功能固化严重,结构难以修改,如果想要添加或者修改功能,就必须要读懂页面层、业务逻辑层和数据访问层的代码。随着项目规模变大,修改的难度也会大大增加。

通过以上分析,理想的远程教学平台应能够同时满足以下几个条件:模块化,即将程序划分成若干模块,各个模块之间的职责清晰,使程序结构一目了然;界面层既能支持传统的网页交互式浏览,也能提供基于AJAX的异步浏览模式;程序可扩展性强,能够根据实际需要增加或修改流程。

三、基于SSH框架技术的远程教学平台的实现

(一)主要技术介绍

1.Maven

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。同一般的自动编译软件相比,它主要有以下两个优点。

(1) Maven具有默认的项目文件结构的规则,不需要编写额外的配置文件来说明如何编译、测试和对项目代码进行打包。由于项目都遵循了默认的规则,程序员可以在较短的时间内熟悉项目的规则,而且任何IDE都可以对项目进行编辑,程序员可以使用各自擅长的编程软件。

(2)Maven对项目进行建模,将项目的构建划分为若干生命周期,不需要对项目进行任何说明,只需要简单的指令就可以自动进行代码测试、项目打包和自动部署等功能。

本文的系统使用了Maven多模块设计方式,将系统不同的功能划分成单独的项目,各个项目之间的依赖由Maven进行维护,这就在更大的程度上隔离了各个模块的代码,使得项目维护以及单元测试更加快捷方便。

2.MVC结构

系统主体结构采用MVC架构,MVC指的是模型(Model)、视图(View)和控制器(Controller)三个部分。这三个部分的联系方式如图1所示。

使用MVC的目的是将模型和视图的实现代码分离,从而使同一个程序可以使用不同的表现形式。在本系统中,为了今后能够开发出Web Service等其他新的表现形式,最便捷的方式就是能够重用原有的业务逻辑和数据访问代码,如果系统使用了MVC的架构,服务层和数据表现层是相互分离的,那么就可以方便地在Web Service中调用原来的服务层代码,大大减少了重复开发工作。

3.SSH框架

SSH是Struts+Spring+Hibernate 3种技术的有机融合,是目前应用最广泛的J2EE架构[2]。Struts是目前较为流行的基于MVC的框架,它主要充当了控制器的角色,负责接收用户的输入、调用服务层的方法后将得到的结果返回给数据表现层。Hibernate充当了模型的角色,它使用XML文件将数据库的字段和实体类字段之间的关系对应起来,将关系型数据库的数据在程序中直接变为程序中的对象。除此以外,Hibernate提供了功能强大的事务管理和缓存机制,教学平台的业务逻辑层通过Hibernate的缓存访问数据可以减少数据库的开销,提高程序的处理速度。Spring在程序中充当了装配工厂的角色,通过XML配置文件将各个子层的实例组织起来,将各个子层之间的依赖关系集中表现在配置文档中,使得系统结构更加清晰合理。

(二)远程教学平台系统模块设计

远程教学系统按用户身份不同主要分为两大子系统:教师子系统和学生子系统。教师子系统为教师提供了日常教学所需要的功能。教师通过资源管理模块可以查看自己所负责课程的所有资源,对过时的资源进行及时的更新或删除,使学生随时可以接触到该门学科的最新进展。相对于传统的以课本为主的教学方式,教师可以在教学平台上随时添加各种类型的文本、图片甚至视频文件来提高学生学习的兴趣,进而加深学生对该课程的理解。教学管理界面不仅为教师提供了学生在学习平台上的学习记录,还提供教师的行为记录,方便教师随时调整教学进度。教师在论坛中可以发起讨论,和学生互动,解答学生在学习中遇到的问题。

学生功能包含资源浏览、资源检索和论坛应用。学生除了可以按课程检索到相应的资源,还可以通过资源访问量、资源最近更新日期等条件检索自己感兴趣的资源。学生可以在论坛中和其他同学、老师一起讨论课程中的问题,发表自己的观点。

系统还包含了一些教师与学生共用的功能,包括收藏夹、个人信息维护、站内所搜等功能,便于用户更方便的使用系统其他功能。图2分别为教师子系统和学生子系统模块设计逻辑图。

(三)远程教学平台系统架构设计

本系统采用MVC架构,因此在设计上被划分成若干子层,各个子层之间相互独立,使用接口对实现的细节进行封装。系统分层示意图如图3所示。

系统在实现时使用Maven进行项目管理,将每一层都划分成独立的项目,然后在各个项目之间建立依赖关系。各个子项目之间的关系如图3所示。

Maven将系统抽象成为项目模型(POM),首先建立一个父项目,对各个项目共用的属性进行汇总,例如测试函数库、编译器设置等。配置文件部分代码如下:

配置文件向Maven阐述了该项目所需要的函数库的名称和版本,以及该函数库的作用。

系统的主要模块从下至上分别为数据持久层、系统服务层、界面表现层。数据持久层负责与数据库进行交互,将读取到的关系型数据库的数据转换成系统能够处理的业务对象。这一部分主要使用了Hibernate进行对象关系映射(ORM),用XML文档将数据库的字段映射为各个实体类的属性。系统服务层调用数据持久层的服务并使用各种业务流程处理得到的数据,服务层也承担着负责划分事务界限的任务。数据服务层将处理好的数据提交到界面表示层,表示层只负责将数据显示在模板页面上和将用户输入的数据传递到数据服务层上,它不对数据进行任何处理。

下面以管理员模块中用户管理系统为例,具体分析Struts+Hibernate+Spring多框架在系统中的应用。

此部分主要功能是对用户进行增加、删除以及修改权限。例如要增加一个系统用户,输入用户信息并提交后,通过Struts调用AddUserAction的execute方法,业务层Service接口的实现类,再间接调用DAO接口的实现类。DAO接口的实现类封装了通过Hibernate访问数据表对应持久化对象的CRUD操作。以下给出Spring的applicationContext.xml配置文件部分代码段:

通过以上配置代码,spring将负责界面层的strutsAction和负责服务层的userSerivces联系在了一起,strutsAction在自己的代码中设置了userServices这一属性,由Spring进行依赖注入。

Struts采用struts-config.xml作为配置文件。在这个配置文件中,struts配置了Spring组件DelegatingRequestProcessor来让Spring托管各个组件。代码如下:

配置文件剩下的部分完全不需要再做其他改动,将Spring带来的影响降到了最低。

四、总结

当前,基于Struts、Hibernate和Spring多框架整合方案及相关技术在一些系统项目开发得到广泛应用,其原因是这3个框架均为开源性框架,有着丰富而且免费的技术文档资料和开发背景;架构的整体设计采用了MVC模式,把表示层与业务层进行了很好的分离。

由于使用maven进行项目管理,系统可以方便的升级自己的函数库并重新打包部署到远程服务器上。整个项目由于进行了适当的分层,项目对分布式开发有良好的支持。通过适当的改动,系统即可以支持远程函数调用(RMI),通过远程函数的方式,系统可以和其他的程序进行通讯,而不再像旧版本程序直接共享数据库。这样做使得数据安全性大大增加,并且将教学系统的可扩展性提升到了一个新的高度。

[1]国家中长期教育改革和发展规划纲要(2010-2020年).

[2]杨海斌.基于SSH框架的高校网站群内容管理系统设计[J].软件导刊,2009,(9).

[3]祝智庭.教育信息化:教育技术的新高地[J].中国电化教育,2001,(2):5-8.

[4]王磊杰,崔军波,韩红宇等.Java EE开发指南-基于Spring/Struts/Hibernate的实现[M].北京:北京人民邮电出版社,2007.

[5]李刚.轻量级J2EE企业应用实战:Struts+Spring+Hibernate整合开发[M].北京:电子工业出版社,2007.

[6]Maven http://maven.apache.org[EB/OL].

2010-05-30

刘英哲,工程师,学士,天津广播电视大学现代教育技术中心(300191)。

责任编辑 柯 南

G40-057

B

1009—458x(2010)09—0069—04

猜你喜欢

远程教学配置文件代码
提示用户配置文件错误 这样解决
专科医师规范化培训远程教学督导的思考与启示
“对截止日期更通融些”:教师们从上轮远程教学中学到了什么
搭建简单的Kubernetes集群
互不干涉混用Chromium Edge
忘记ESXi主机root密码怎么办
创世代码
创世代码
创世代码
创世代码