您好, 访客   登录/注册

基于Maven开发的模块化在线教学平台

来源:用户上传      作者: 林鹏 张晶

  摘 要:本文介绍了基于Spring和Hibernate框架的在线教学平台,该平台采用模块化的思想进行开发,各个模块之间能够方便的进行替换和升级。同时,系统在开发的过程中使用了Maven进行项目管理来降低系统各个模块之间的耦合度,使得代码的复用性大大提高,并且实现了项目的并行开发。实际应用表明该系统可扩展性强且性能稳定。
  关键词:Spring Hibernate maven 在线教学平台
  
  一、远程教育平台发展现状
  随着信息技术特别是网络技术和多媒体技术的发展,以网上交互式学习为主要手段的远程开放教育平台成为了远程开放教育的重要组成部分。通过有机的整合现代教育技术、教育内容、资源以及教学管理手段,远程教育平台取得了巨大的成就。然而,随着远程教育平台的发展,一些问题也随之产生了。
  首先,是系统响应速度变慢。随着教学系统使用用户的增加,系统的并发数量也不断攀升,导致单位时间内需要同时处理的业务逻辑更多,因此要求教学系统的处理速度必须更快。网络程序的处理速度快慢主要依赖于数据库访问层部分,因为数据库的访问是一个较为复杂的流程,首先需要建立到数据库的连接,认证成功后,要发送SQL语句等待数据库语法校验,成功后数据库将符合要求的数据返回给网络程序,最后需要关闭数据库的连接。因此,如何降低数据库访问次数成为网络程序的一个需要解决的问题。目前这个问题的主要解决方案有两个:第一种方案就是建立机群,提高数据库服务器的处理性能。这种方案的优点是实行简单。程序不需要修改大段的代码,只要设置好数据库的负载均衡就能够完成。然而这种方案的缺点就是造价较高,需要耗费大量的资金。第二种方案就是在网络程序的数据访问层加上数据库访问缓存,将对数据库访问的结果缓存在内存中,程序在需要数据的时候首先访问缓存,如果有相应的数据就不再连接数据库,避免不必要的开销。这个方案从根本上减少了数据库访问的次数,不需耗费资金,同样可以达到提升系统处理速度的目的。然而要实施这个方案,系统后台代码必须有良好的分层和结构,各个子层之间较为独立,可以替换。而且开发一个数据库缓存的任务已经大大超出了开发网络程序的难度。随着成熟数据库访问层中间件的产生,在教学平台中使用稳定的数据库缓存已经成为可能。
  其次,系统的界面较为原始和简单,用户操作起来较为复杂,从而导致易用性降低。用户每次浏览一个页面都会看见浏览器等待服务器响应时候的白色画面,此时的浏览器无法响应用户的任何输入,用户只能等待服务器的响应才能进行下一步的操作。随着近年来各个网页浏览器之间的标准逐渐统一,综合使用CSS+HTML+JavaScript的XHTML技术渐渐流行起来,浏览器标准中对文档对象模型的支持还有异步加载XML的XMLHttpRequest对象使得异步加载网页成为了可能。用户在提交数据以后,浏览器仍旧能够响应用户的输入。服务器端接收到用户的数据以后传回的数据也不再是整个页面的HTML,而是自定义的数据格式,这使得服务器和浏览器之间的通讯量减少但是程序依旧能维持原来的功能。
  最后,系统在软件设计上结构较简单,各个部分代码耦合性较强。系统的页面后台代码经常掺杂着各种逻辑业务的控制逻辑甚至是直接访问数据库的语句,使得系统整体的结构难以修改。如果想要添加或者修改功能,就必须要读懂页面层、业务逻辑层还有数据访问层的代码。随着项目规模变大,修改的难度也会增加。
  通过以上分析,新的远程开放教育平台应该能够同时满足以下几个条件:模块化:即程序应该划分成模块,各个模块之间的功能划分清晰,使程序结构一目了然;程序可扩展性强,能够根据实际需要增加或修改流程;能支持多种界面方案。
  综上所述,本文拟使用项目管理工具Maven构建教学平台项目,平台的主体架构将有机整合Spring和Hibernate两大框架。
  
  二、主要技术介绍
  1、Maven
  Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
  本文的系统使用了Maven多模块的设计方式,将系统不同的功能划分成了单独的项目,各个项目之间的依赖由Maven进行维护,这就在更大的程度上隔离了各个模块的代码,使得项目维护以及单元测试更加快捷方便。各个项目小组可以将自己的项目代码打包后上传到服务器的代码库中,其他项目组自动可以得到最新修改的版本。
  2、MVC结构
  系统主体结构采用MVC架构,MVC指的是模型(Model)视图(View)控制器(Controller)。
  使用MVC的目的是将模型和视图的实现代码分离,使同一个程序可以使用不同的表现形式,服务层和数据表现层是相互分离的,那么就可以方便的在Web Service中调用原来的服务层代码,大大减少了重复开发的工作。
  3、Spring和Hibernate框架
  Spring的SpringMVC框架是目前较为流行的基于MVC的框架,它主要充当了控制器的角色,负责接收用户的输入、调用服务层的方法后将得到的结果返回给数据表现层。Hibernate充当了模型的角色,它使用XML文件将数据库的字段和实体类字段之间的关系对应起来,将关系型数据库的数据在程序中直接变为程序中的对象。Hibernate还提供了事务管理和缓存机制,教学平台的业务逻辑层通过Hibernate的缓存访问数据就可以减少数据库的开销,提高程序的处理速度了。Spring在程序中充当了装配工厂的角色,通过XML配置文件将各个子层的实例组织起来,将各个子层之间的依赖关系集中表现在配置文档中,使得系统结构更加清晰。
  
  三、系统实现
  本系统采用MVC架构,因此在设计上被划分成若干子层,各个子层之间相互独立,使用接口对实现细节进行封装。系统在实现时使用Maven进行项目管理,将每一层都划分成独立的项目,然后在各个项目之间建立依赖关系。
  Maven将系统抽象成为项目模型(POM),配置文件向Maven阐述了该项目所需要的函数库的名称和版本,以及该函数库的作用。在上面的示例中,配置文件声明了一个对测试函数的依赖,并且说明该函数库只进行测试,不需要打包到将来生成的项目中,这就使得项目更加精简,去除了不必要的代码。
  系统的主要模块从下至上分别为数据持久层、系统服务层、界面表现层。数据持久层负责与数据库进行交互,将读取到的关系型数据库的数据转换成系统能够处理的业务对象。这一部分主要使用了Hibernate进行对象关系映射(ORM),用XML文档将数据库的字段映射为各个实体类的属性。系统服务层调用数据持久层的服务并使用各种业务流程处理得到的数据。服务层也承担着负责划分事务界限的任务,当业务流程对各个不同的实体类的处理都成功结束后就提交事务,如果在处理当中出现任何错误,则将事务回滚。数据服务层将处理好的数据提交到界面表示层,表示层只负责将数据显示在模板页面上和将用户输入的数据传递到数据服务层上,它不对数据进行任何处理。
  
  四、未来展望
  当前,基于Hibernate和Spring多框架整合方案及相关技术将会在一些系统项目开发得到广泛应用,其原因是这两个框架均为开源性框架,有着丰富的而且免费的技术文档资料和开发背景;架构的整体设计采用了MVC模式,把表示层与业务层进行了很好的分离。
  由于使用maven进行项目管理,系统可以方便的升级自己的函数库并重新打包部署到远程服务器上。整个项目由于进行了适当的分层,项目对分布式开发有良好的支持,项目组成员通过更新自己的代码,通过对配置文件适当的改动,系统即可以支持远程函数调用(RMI),通过远程函数的方式,系统可以和其他的程序进行通讯,而不再像旧版本程序直接共享数据库。这样做使得数据安全性大大增加,并且将教学系统的可扩展性提升到了一个新的高度。
  
  参考文献:
  [1]孙厚钊.多媒体网络教学浅析[J].开放教育研究,2003,(5):35-36.
  [2]郭诊水,高小玲.远程数育系统设计实例[M].北京:中国宇航出版社,2004.
  [3]Francois Fluckiger.Understanding Network Mulitimedia Application and Technology[M].CMP,1997.
  [4]吴志航.远程教育webservice应用模型的设计与实现[D].浙江大学,2002.□
  


转载注明来源:https://www.xzbu.com/9/view-1029751.htm