APP下载

基于ssi框架藏语/汉语在线教育系统的设计与实现

2017-10-13李自清

软件 2017年4期
关键词:转码视图框架

李自清



基于ssi框架藏语/汉语在线教育系统的设计与实现

李自清

(青海民族大学物理与电子信息工程学院青海西宁 810007)

随着互联网的发展,在线教育已经变得越来越流行。开展现代化的在线教育,建设藏语/汉语在线教育系统,适合我国国情以及社会的发展,对于改善藏族地区教育的教育状况有着极其重要的意义和作用。文中设计和完成了基于spring+springMVC+iBatis藏语/汉语远程教育系统的在线学习平台,介绍了在 Eclipse开发平台下,利用spring、springMVC、iBatis技术开发该平台。主要讨论了系统所涉及的相关技术,设计的思想以及系统各功能模块的设计与实现。

在线学习平台;藏语/汉语在线教育;spring+springMVC+iBatis

0 引言

随着互联网的发展,在线教育已经变得越来越流行。在线教育指的是通过应用信息科技和互联网技术进行内容传播和快速学习的方法。与传统教育相比,在线教育具有效率高、方便、低门槛、教学资源丰富的特点。基于上述特点,再加上“互联网+”推动,在线教育平台兴起,规模逐渐打开,并获得了资本市场青睐。随着在线教育的发展,三类主要的在线教育平台已经形成,分别是K12教育平台、高等教育平台、职业教育平台。虽然在线教育平台的种类众多,例如有针对IT培训的,有针对于高等教育的,有针对于小初高中教育的,但是目前还没有针对藏语/汉语远程教育学习的平台。而针对少数民族地区的在线教育系统正处在起步阶段。

鉴于藏族地区的教育现状的需求和社会发展的必然,开展和建设藏语/汉语在线学习系统,适合我国国情以及社会的发展,对于改善藏族地区教育状况有着极其重要的意义和作用[1-4]。基于此背景,本文设计了藏语/汉语在线教育系统平台,采用了spring、springMVC、iBatis 框架、MVC设计模式、ffmpeg转码等技术,降低了系统模块的耦合度,增强了系统的可维护性和灵活性。

1 相关技术介绍

1.1 MVC设计模式介绍

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离。这样一个应用被分成三部分:模型、视图和控制器[5-7]。它实现了数据层与表示层的分离,特别适用于开发与用户图形界面有关的应用程序。下面介绍模型、视图、控制器三层的作用:

(1)模型层:应用对象。模型是应用程序的主体部分。模型代表了业务数据和业务逻辑;当数据发生改变时,它要负责通知视图部分;一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。

(2)视图层:数据的展现。视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。

(3)控制层:控制层接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

1.2 轻量级spring、springMVC、iBatis框架的介绍

1.1.1 springMVC框架

SpringMVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC 也是要简化我们日常Web开发的[5]。

1.2.2 iBatis框架

iBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。iBatis避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集。iBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录[6]。

1.2.3 spring框架

spring的核心是个轻量级的容器,它是实现IoC容器和非侵入性的框架,并提供AOP概念的实现方式;提供对持久层、事务的支持;提供MVC Web框架的实现,并对于一些常用的企业服务API提供一致的模型封装,是一个全方位的应用程序框架,除此之外,对于现存的各种框架,spring也提供了与它们相整合的方案[7]。

1.3 ffmpeg介绍

ffmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。ffmpeg可以轻易地实现多种视频格式之间的相互转换,例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式[8]。

2 系统功能设计

2.1 系统的结构

从实际需求出发,系统采用B/S架构。客户端通过浏览器或者Android、iPhone移动端设备访问服务器;服务器与数据库服务器mysql和mongodb通过ADO对象实现连接[9]。三者通过Internet实现互联。本系统的结构如图1所示:

图1 系统结构图

2.2 系统用户设计

藏语/汉语在线教育系统面向的用户可以分为普通,教师,系统管理员三类。

2.2.1 普通用户

学生用户可以通过邮箱在该网站进行注册,注册完成后用户根据注册的邮箱和密码进入系统学习平台进行相关的操作。学生用户可以在首页查看课程、社区、文章、个人中心四个模块。在课程模块中用户可以查看课程的信息和评论信息,可以根据自己的兴趣爱好加入感兴趣的课程。社区模块中包括了其他用户提的问题,用户可以查看和回答其他用户的问题。文章模块中用户可以查看其他用户写的文章,用户也可以发表文章。个人中心模块中用户可以修改个人信息和密码,可以查看用户的课程、文章、关注、提问等。

2.2.2 教师用户

教师用户可以通过邮箱在该网站进行注册,注册完成后教师用户可以根据注册的邮箱和密码进入系统学习平台进行相关的操作。教师用户的功能包括了个人中心管理、课程管理等操作。在个人中心中是对个人信息的维护、对我的文章的维护。课程管理包括了对视频信息和评论的维护,视频的转码,和学生学习情况的统计。

2.2.3 系统管理员用户

管理员用户包括了用户管理、反馈管理、消息推送、课程管理、文章管理、社区管理等操作。

2.3 系统功能模块设计

系统功能模块设计如图2所示。

下面根据用户的角色介绍功能模块的作用:

(1)普通用户包括了个人中心模块、课程模块、社区模块、文章模块。个人中心模块:在个人中心模块中包括了对个人信息的维护、我的文章的维护、我的提问的维护、我的关注的维护、我的课程的 维护。

图2 系统功能模块图

课程模块:在课程模块中用户可以根据课程的分类选择需要的课程,在课程中包括了课程的介绍、主讲人介绍、课程的评论等等信息。用户可以加入感兴趣的课程学习。用户还可以对感兴趣的课程进行关注,当有课程更新的时候会给用户发送推送消息。

社区模块:社区模块包括了两个功能,分别是等待回答和推荐。等待回答中的内容是其他用户提出的问题并且允许有用户回答,推荐是系统推荐给该用户回答的问题。

文章模块:文章模块包括了文章列表和写文章两个功能。在该模块中用户可以写学习课程的感受,或者可以写一些跟课程相关的文章供所有用户欣赏。

(2)讲师用户包括了个人中心模块、课程管理模块。

个人中心模块:个人中心模块包括了对个人信息的维护、我的文章的维护。课程管理模块:在该模块包括了对课程信息的维护和推送、对课程评论的维护、对该课程学生学习情况统计、对视频转码的管理等功能。

(3)管理员用户包括了用户管理模块、反馈模块、消息推送模块、文章管理模块、社区管理模块、课程管理模块。

用户管理模块:用户管理模块是管理员对其他用户信息的维护。包括了对其他用户的增删改查。反馈模块:该模块的作用是反馈视频播放情况的。如果在视频播放的过程中出现视频卡顿、视频画质不清晰等情况,可以通过发送反馈信息,方便运营人员给用户提供好的用户体验。

消息推送模块:当有课程更新的时候给关注该课程和加入该课程的用户发送推送消息。文章管理模块:对文章的维护,包括了对文章的增删改查 操作。

社区管理模块:对社区问答的维护,包括了对文章的增删改查操作。课程管理模块:对课程的维护,包括了对课程的增删改查操作,学生学习的统计情况。

2.4 系统数据库设计

系统后台采用mysql数据库,通过jdbc进行数据库连接,在数据库中比较重要的表有11张数据表,分别是课程表(play)、视频表(movie)、视频格式表(video)、课程分类表(classify)、学习记录 表(learn_record)、反馈表(feedback)、用户表(user)、评论表(comment)、关注表(play_store)、转码任务表(video_task)、转码状态表(video_beast)。play 表中存放课程的信息,movie表中存放视频的信息,video表中存放视频的各个格式的信息,classify 表中存放课程的各种分类信息,learn_record表中存放学生的学习记录,feedback表中存放用户的反馈信息,user 表中存放用户的个人信息,comment 表中存放用户对课程的评论信息,play_store表中存放用户对课程的关注信息,video_task表和video_beast 是视频转码用到的表。数据库的详细信息如图3 所示。

3 系统架构设计

为了给用户更好的用户体验,减少用户连接数据库的频率,加快用户访问数据库的速度,在本系统在传统技术的基础上添加了memcached缓存技术[10]和mongodb数据库[11]。其架构图如图4所示。

在线学习平台主要划分为控制层、业务逻辑层、数据访问层[7]。

(1)控制层:控制层和用户进行交互,接收用户请求,同时将请求结果展示给用户,一170般使用MVC模式。控制层在收到用户请求后会将请求交给业务逻辑层处理,业务逻辑层经过处理后将结果返回到控制层,进而通过控制层将数据展示给用户。本平台使用springMVC框架实现。

(2)业务逻辑层:完成后台系统的业务逻辑。业务逻辑层可以处理控制层传来的数据,并对这些数据进行预处理,然后调用数据访问层的相关函数,完成与数据库的交互。最终将结果返回到控制层,由控制层将数据展示给用户。本系统使用spring框架实现业务逻辑层。

(3)数据访问层:完成Java对象的持久化,建立其与数据库表的映射关系,以及对数据库的访问。简单的说法就是实现对数据表的增删改查等操作,以及对象和数据表之间的mapping,对象实体的持久化。本系统使用iBatis框架实现数据访问层。

3.1 组件之间的依赖关系

分层思想使的各模块可以独立开发测试,提高了软件的可重用性,便于代码的管理和改动。系统的各模块之间通过接口连接。下一层只需要为上层提供接口即可,上一层不需要知道下一层具体的实现[12]。各组件之间的依赖关系如图5所示。

图3 数据库设计图

图4 系统架构图

3.2 系统的实现

在线学习平台采用的Java分层开发模式,主要包括普通用户子系统模块、讲师用户子系统模块、管理员用户子系统模块。这三个子系统的模块的开发流程和大体思路基本相似。由于篇幅限制,本文只介绍该平台具有代表性的两个模块的实现。

图5 组件依赖关系图

3.2.1 普通用户子系统中课程模块的实现

课程模块主要实现了课程分类、课程评论、加入课程、课程信息等功能。因为采用的是javaEE的分层开发模式,所以在本模块中课程分类、课程评价、课程信息、加入课程的设计方法的思路类似。下面将对加入课程模块功能进行详细阐述,依次通过控制层、业务逻辑层、数据访问层来介绍其底层逻辑的实现。

控制层的任务是数据的封装和传递。在本模块中控制层的类是 PlayInfoController,该类继承了MobileUIBaseController,MobileUIBaseController 中定义了一些课程常用的属性。在PlayInfoController 类名上用@Controller指定该类为一个控制器,并在类的方法上用@RequestMapping指定核心分发器分发给控制器的处理路径和参数。当有请求的时候,会根据请求的路径和@RequestMapping的路径做匹配。当用户点击开始学习后会根据其请求路径来调用PlayInfoController类中的getMovies方法,传递的参数包括plid、uuid。在该方法的内部会调用拦截器,判断用户是否登录,如果用户登陆后会得到用户名userId。然后对 plid,uuid,userId进行封装传递给业务逻辑层的类方法使用,当getMovies方法执行结束后,return一个封装类AjaxResult,在该类中封装了用户需要的信息,最终将 AjaxResult返回给jsp或者Android、iPhone客户端页面中。

业务逻辑层主要是由接口(interface)和接口的实现类来实现每个功能模块的逻辑。在此模块中,PlayInfoController类使用spring配置文件applicat­ionContext.xml依赖注入PlayInfoService Bean,通过面向接口编程思想,当调用PlayInfoService中的 getPlayInfoXXX的方法的时候,会调用业务逻辑层 PlayInfoServiceImpl中对应的同名方法getPlay­Info­XXX来实现一些具体的业务。为了减少用户访问数据库的次数、加快用户访问数据库的速度,在业务逻辑层中涉及到查询数据库的情况都用到了mem­ec­ached和mongodb技术。如果需要查询数据库,则先查询mongodb数据库,因为mongodb数据库的访问速度快。如果在mongodb数据库中没有查找数据则再查询mysql数据库。

数据持久层主要是通过数据访问对象DAO(Data Access Objects)把对数据库的操作全部封装在里面,然后由业务逻辑层PlayIn­fo-ServiceImpl来调用PlayInfoDAO中对数据库的操作,PlayInfoDAO类中依赖注入spring框架提供的StoreMorphiaBean和SqlMapClientTemplate Bean。在这StoreM­or­phiaBean种封装了对mongodb的jdbc操作,在SqlMapClientTemplate中封装了对mysql的jdbc操作[13]。在本模块中通过操作play表、play_learn表、movie表、video表获得相应的数据信息。

3.2.2 视频转码模块的实现

视频转码的功能是将不同格式的视频统一转码为相同格式的视频。这样可以使普通用户不会因为浏览器不支持播放某种视频的格式而不能正常观看。视频转码模块是一个定时任务,不是javaEE程序,所以在此处没有使用javaEE的分层模式。视频转码模块的主要工作是每隔一段时间就向视频存储服务器查看有没有需要转码的视频,如果有则进行转码。在该模块中首先调用VideoTranscodeDaemo 类中的main方法。然后判断传入的参数,如果没有参数传入,就要进行视频转码。首先调用Video­Sta­rtupServiceImpl类的start()方法,然后调用该类的preProcess()查找出需要转码的视频并建立任务。调用VideoConvertEngine类中的submitTask()方法,在该方法中进行转码任务的状态更新。最后再依次调用 DownloadStageImpl、PreConvertStageImpl、Mp4ConvertStageImpl、FlvConvertStageImpl、M3u8­ConvertStageImpl、UploadStageImpl和FinishStag­eImpl类中的execute()方法进行转码。其转码流程图如图6所示。

4 结论

本文设计实现了藏语/汉语在线教育系统系统,并研究基于JavaEE的MVC软件设计模型的特点和关键技术。介绍并应用开源框架spring、spring­MVC、iBatis。为了提高系统的运行速率,减少用户访问数据库的频率,使用了memcached技术。所以当用户访问数据的时候先查看缓存中是否有需要的数据,如果没有才去连接数据库查询。为了提高用户访问数据库速度,本平台采用了mongodb和mysql数据库相结合的方式。用户可以通过该系统在任何时间、任何地点进行在线学习,消除了时间、空间障碍,降低了成本。凭借其信息存储量大,交互性强等特点,提高了藏语/汉语在线教育学习的效率。

图6 转码流程图

[1] 郑小龄, 郑嘉. 在线教育中的蓝海[J]. 港澳经济, 2015, (3): 60-61.

[2] 申晋祥, 鲍美英. 基于Android的移动在线教育平台的设计与实现[J]. 软件, 2016, 3(3): 30-33.

[3] 裴勇, 孙玉娣. 职业教育专业教学资源库资源建设研究[J]. 软件, 2015, 36(11): 23-26.

[4] 谢良才, 张焱, 李亚平. 中国传统手工艺文化重建的路径分析[J]. 理论与现代化, 2015(2): 111-115.

[5] 韩立. 基于MVC三层架构会员管理系统设计与实现[D]. 石家庄: 河北科技大学, 2014.

[6] 任广震, 侯进, 王献. MVC模式在B/S结构政务系统的应用研究[J]. 计算机应用与软件, 2014, 31(8): 54-58.

[7] 辛晓鹏, 吴伟明. J2EE 及相关技术的优化在基站巡检系统中的应用[J]. 软件, 2015, 36(9): 87-91.

[8] Paul Deck. Spring mvc 学习指南[M]. 北京: 人民邮电大学出版社, 2015.

[9] 任刚. ibatis 框架源码剖析[M]. 北京: 电子工业出版社, 2010.

[10] 徐明华. Java Web 整合开发与项目实战[M]. 北京: 人民邮电出版社, 2010.

[11] 吴张顺, 张珣. 基于 FFmpeg 的视频编码存储研究与实现[J]. 杭州电子科技大学学报, 2006, 26(3): 30-34.

[12] 李昕, 李凤华. 计算机基础在线学习系统的设计与实现[J]. 辽宁工业大学学报, 2009, 11(6): 130-131.

[13] 刘亮, 徐步东, 谭艳艳. 基于Memcached内存对象缓存技术应用研究[J]. 计算机技术与发展, 2015, 25(11): 204-208.

[14] Kristina Chodorow. MongoDB 权威指南第2版[M]. 北京: 人民邮电出版社, 2014.

[15] 张倩, 李鹤. 视唱练耳课程在线学习系统的设计与开发[J]. 吉林工程技术师范学院学报, 2015, 31(7): 57-60.

[16] 冯祖洪. MySQL 的分布式数据库访问法[J]. 计算机应用, 2004, 22(8): 4-6.

The Design and Realization of Online Education System Based on SSI Framework of Tibetan/Chinese

LI Zi-qing

(School of physics and electronic information engineering, Qinghai University for Nationalities QingHai Xinin 810007 China)

With the development of the Internet, online education has become more and more popular. To carry out the modernization of online education, construction of Tibetan and Chinese online education system, suitable for China’s national conditions and social development, to improve the educational status of the education in Tibetan areas has extremely important significance and role. In this paper, design and completion of the spring+spr­ing­MVC+iBatis Tibetan/Chinese distance education system based on online learning platform, introduced in eclipse development platform, using spring, springmvc, ibatis technology development the platform. It mainly discusses the related technology, design ideas and the design and implementation of each function module of the system.

Online learningsystem; The Tibetan/Chinese online education; Spring+springmvc+iBatis

TP311

A

10.3969/j.issn.1003-6970.2017.04.007

教育部“春晖计划”合作科研项目, S2015037

李自清(1975-),讲师,硕士,研究方向:计算机应用技术。

本文著录格式:李自清. 基于ssi框架藏语/汉语在线教育系统的设计与实现[J]. 软件,2017,38(4):36-42

猜你喜欢

转码视图框架
视频转码技术在广播电视中的应用研究
广义框架的不相交性
基于Hadoop的流媒体转码系统设计
基于IPTV点播业务的视频分段式转码方案的研究与应用
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
WTO框架下
基于Hadoop 的分布式视频转码方案
一种基于OpenStack的云应用开发框架