实验课协同化管理系统
2013-10-17李兴莹
李兴莹
(华中师范大学武汉传媒学院电子商务教研室 湖北 430205)
0 引言
根据教育部印发的《关于加强高等学校本科教学工作提高教学质量的若干意见》文件,实践教学对于提高学生的综合素质、培养学生的创新精神与实践能力具有特殊的作用。根据文件的要求,该系统注重更新实验教学内容,提倡实验教学和科研课题相结合,加强了统筹建设和科学管理,实现资源共享,提高了使用效率。
该系统所使用的网络技术是现在已经应用非常成熟的技术,包括HTTP通讯、VOIP(IP语音技术)、DBMS(数据库)技术、报表技术、网络安全控制技术、搜索引擎技术、IM(及时通信)技术等,通过这些技术手段可以实现本系统的开发与应用。
1 系统功能架构
整个系统主要包含后台管理系统、实验课协作平台、答疑平台三大子系统。
后台管理系统提供对基础数据的维护功能,比如学生/教师的资料管理、课堂进度管理、实验报告管理、实验答疑管理等等。
实验课协作平台提供实时远程文字、白板、语音、视频等多种多媒体教学方式,让学生与教师可以充分互动。
答疑平台提供类似留言板的问答机制,帮助学生与老师针对某个知识点或问题进行离线沟通。
图1 系统功能架构图
数据共享中心实现后台管理系统、实验课协作平台和答疑平台之间的数据共享与同步。
整个系统基于J2EE和相关开源技术实现,采用了开放的技术标准,具有良好的稳定性和扩展性,便于维护和进一步扩充功能。
2 系统技术架构
本系统采用B/S架构设计,客户端使用Web Browser与系统交互。
2.1 后台管理系统
后台管理系统采用Struts2+AJAX+MyBatis+MySQL实现
这套系统基于J2EE MVC框架进行设计,使用了Struts2、MyBatis等成熟的开源框架,性能和扩展性都能得到保障。
图2 后台管理系统的技术架构图
在这套系统中,我将应用进行分层设计,分别为UI展现层、服务层、业务层和数据存储层。UI层负责数据显示和与用户交互;服务层将各个独立的功能进行抽象;业务层负责业务流程的实现;数据存储层负责将各个实体对象映射成业务对象,并负责将数据存储到数据库中。分层处理以后的系统,结构更加清晰,便于后期维护和扩展。
UI层使用Struts和JQuery技术实现,充分利用了成熟的WEB2.0技术,使用户的体验得到保障。在设计Service时考虑了线程安全性,使用ThreadLocal存放数据库连接以及其他只能在线程内访问的资源。Business层将各个独立的业务进行抽象,便于重用和扩展。数据库持久层采用MyBatis实现,普通开发人员很容易上手,降低了后期开发和维护的成本。
2.2 实验课协作平台
实验课协作平台基于OpenMeetings(Openlaszlo+Red5+Ser vlet/JSP+Spring+Hibernate)实现。
OpenMeetings所采用的技术都是比较成熟的Java开源技术。OpenMeetings的开发语言是Java和LZX(Laszlo XML-based language,一种基于XML和JavaScript的语言),它的服务端运行依赖于开源的流媒体服务器 Red5,客户端源代码是基于OpenLaszlo的应用,即OpenMeetings是一个基于Flash前端的视频会议解决方案。其中,OpenLaszlo是一个用于开发富客户机应用程序的Web框架,这种应用程序可以很容易地编译成Flash和DHTML。因此,OpenMeetings的最大特点是会议客户端无需下载安装,由于OpenMeetings系统将客户端设置成swf形式,通过网页浏览的方式自动加载,因此,所有能支持Flash的浏览器都可以使用OpenMeetings进行视频会议或其他应用。
在这套平台上,教师可以进行在线授课,使用白板、视频等手段。只要是加入到课堂中的学生,都能看即时看到授课内容。这里的白板和视频使用了ScreenVideo技术,可以向在线的学生共享当前授课教师的桌面内容。
2.3 远程答疑平台
远程答疑平台基于BBS技术实现。我们在BBS系统上根据课程设置相应的专栏,针对具体的课程为学生与老师进行远程答疑提供交互支持。学生在系统上提出自己的疑问后,负责授课的老师会从系统收到提醒,然后对学生进行在线讲解。
2.4 数据共享中心
数据共享中心解决各个子系统之间的数据同步要求。数据共享中心对各个子系统的公共数据进行集中管理,并且亦能将某个子系统的私有数据开放给其他子系统。为了能够支持未来的扩展,数据共享中心采用ESB技术实现。
3 核心技术问题及解决方案
3.1 实时视频和语音服务
本系统基于Red5 Media Server 1.0构建,提供了基于Adobe Flash Player的强大的视频流媒体和多用户解决方案。Red5基于RTMP / Servlet实现,能够满足本系统中的视频教学要求。Red5支持ScreenVideo、On2 VP6、Sorenson H.263、H.264等多种视频格式和ADPCM、NellyMoser、MP3、Speex、AAC等多种音频格式。
远程教学需要具备一定的实时性,学生能立刻看到老师的教学过程,这样才能增强教学效果。在这个方案中,我们采用了基于Flash的实时流媒体技术,视频/语音传输协议使用RTMP。
RTMP协议建立在TCP协议或轮询HTTP协议之上。RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的。
RTMP的协议净核是用AMF格式来描述,AMF格式本身的产生就是为了RTMP协议服务的,最初的RTMP采用XML的形式传输数据,但XML只是字符形式的值对的格式传输数据,而随着应用的普及这完全不能满足要求了,于是AMP代替了XML。AMF是采用二进制压缩和传输数据,从而为Flash 播放器与Flash Remoting网关通信提供了一种轻量级的、高效能的通信方式。
RTMP协议中的消息包含两个部分:包头和消息体。包头包含时间戳、消息长度、消息类型以及消息流ID。消息体包含了消息的实际数据。
例如下面是一段RTMP消息的样本:
其中,“消息类型”占一个字节,“消息长度”占三个字节,这里指明消息体部分的有效长度。时间戳用于标识消息的生成时间。“消息流ID”是消息的唯一标识。
RTMP通信以握手开始,包含三个固定长度的消息块。客户端在和服务端在通讯中每次互相发送同样三个消息块。客户端发送的消息块被指定为C0、C1、C2;相对地,服务端发送的消息块被指定为S0、S1、S2。握手以客户端发送的C0和C1消息块开始,客户端在收到服务端发送的S1后再发送C2,并且在收到S2后再发送其他数据。相对地,服务端在收到C0后才能发送S0和S1,并且在收到C1后才能发送S2,在收到C2后才能发送其他数据。基于以上RTMP的传输机制,保证了服务端与客户端在语音、视频数据传输方面的实时性和可靠性。
系统将教师机上的操作画面及语音信息通过RTMP共享到所有学生机上,并且在教师开放权限的条件下也允许学生操作教师机的屏幕。通过这样师生在线互动的授课模式,能大大提高教学效果。
3.2 数据持久化方案
本系统采用了基于MyBatis的持久化方案。MyBatis是轻量级的O-R框架,接近于JDBC模式,使得开发人员更容易上手。由于MyBatis已能自动处理SQL数据类型到Object的转换,所以开发速度要比JDBC快得多。而相比于Hibernate、JPA等技术,它的配置更加简单,更重要的是设计人员可以直接对SQL进行优化,而不像Hibernate和JPA等技术对开发人员隐藏了SQL细节。通过使用MyBatis,可以将复杂的数据库处理逻辑所形成的SQL定义在XML文件中,MyBatis能自动处理SQL与Java对象之前的转换。这样可以将数据实体处理与业务逻辑分离,后期还可针对SQL单独优化。这样即简化了设计,又提高了系统的模块化和健壮性。
为了减少开发人员的工作任务,还开发了一套自动化的模板程序。可以针对特定的系统进行模板定制。当我们需要开发新的模块时,可以通过这套自动化程序生成类似Hibernate那样的映射文件和相应的程序。以此模板为基础,开发人员几乎可以不用编写额外代码,只需做一些简单的配置就能完成新模块的开发。
4 结束语
本文结合现有的成熟的J2EE和Web 2.0技术,实现了一套切实可行的远程实验课教学系统,在远程教学系统上进行了实验课的初步探索,对远程教学的发展具有一定的实践指导意义。但还有一些问题没有解决。比如,对于不同专业的实验课,实验课的开展方式和内容都会有很大差异,仅仅通过视频和语音这些共享手段是不够的。比如,对于计算机网络学实验,必须能够虚拟出各种网络设备,然后进行相应的实验。所以如果能将实验课件系统融合到本系统中,那么就能真正体现这套系统的价值。所以,在下一步探索中,我将继续研究如何将课件系统建模并形成统一的接口,然后再与现有的实验课件进行整合,到时将会形成一个完整的远程实验环境。
[1]http://forums.adobe.com/index.jspa Adobe技术论坛
[2]http://code.google.com/p/openmeetings/ OpenMeetings主页(包含了全部源代码)
[3]http://struts.apache.org/2.x/ Struts2主页(包含源代码和相关文档)
[4]http://www.red5.org/ Red5主页
[5]http://code.google.com/p/red5/ Red5主页
[6]http://www.mybatis.org/java.html MyBatis主页
[7]http://www.openlaszlo.org/ Openlaszlo主页