文/陶新权 杜争 安翼
Web2.0的出现使互联网更加人性化和开放化的同时,也给信息化教育的应用带来了新契机和思维模式的变化,为教学改革创造良好的条件。教师在教学过程中需要加大应用知识和探求未知的比重,唤起学生的学习兴趣,并培养学生自主研究的学习习惯;贯彻启发引导原则,创新研究型课堂教学模式激发思维活力,提高学生问题解决能力;构筑信息化、开放式的研究型教学环境,为自主性学习提供有力支撑。
本文以北京航空航天大学图书馆为本科生开设的公共选修课《HP-UX系统基础》的教学网站建设为例,展示Web2.0技术如何为自主性学习搭建良好的教学环境。
《HP-UX系统基础》课程从最基础的概念、操作命令开始,全面地介绍了HPUX系统基本结构、系统的使用与系统管理等专业知识。由于该课程面向的是不同年级、不同学科背景的学生,学生个体计算机水平参差不齐,且课程中的命令和选项多而杂、不易理解记忆、感性认识差等使很多初学者感到这门课程不易真正学懂弄通。这都影响了学生学习的主动性和积极性。
因此,研究课程教学网站的组织机制、技术实现及网站使用等问题,构建适合专业教学特点网站的基本模型成为教学改革关注的重要问题。该系统面向高校的学生、教师和管理员,应具备的功能包括:1. 为学生提供除课堂之外的辅助学习环境,展示更全面、丰富的课程信息。2.提供互动交流平台,方便教师和管理员发布信息、管理相关资源。3.上机实践环境。《HP-UX系统基础》是一门操作性很强的课程,提供一个良好的上机实践环境,有利于学生不断提高解决问题的能力。4.在充分体现“以学生为主、教师为辅”的原则的基础上,应激发学生学习的自主性和能动性,增强学生的学习兴趣,促进学生潜能的发挥和个性的发展。5.教学内容是一个动态的、不断变化的过程,系统应具有方便地对网上教学内容随时进行更新的功能。因此,系统的设计开发应该基于开放性、交互性、动态性、共享性、引导性和可维护性等原则。
开源内容管理系统——Drupal
Drupal是基于PHP的开源内容管理系统,具有明显的面向对象思想和Web2.0特征。Drupal的功能具有模块化特点,其分为核心模块、附加模块及用户定制模块。核心模块是安装时自带的模块,如用户管理、模块管理、内容索引及搜索、博客、论坛等。附加模块是Drupal社区开发者提供维护的模块。用户定制模块是在应用中根据具体应用设计的模块。Drupal提供了Hook机制来对已有的模块功能进行扩充,并提供了数据库层及数据库层访问的API,可方便地在用户定制模块中完成各种功能。Drupal具有很高的可配置性、可伸缩性和可扩展性。从个人站点到大型企业门户、电子商务网站都可使用Drupal搭建。虚拟机
图1 iVIC总体结构
虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。iVIC(Internet based Virtual Computing Enviroment)是一个利用虚拟机构建的虚拟计算环境,通过在物理计算机集群上构建独立、隔离、可定制的虚拟机网络以实现硬件资源的复用,提高资源利用率,其结构如图1所示。其功能模块有:
1. 虚拟机容器(VM Container):安装部署到每一台连入虚拟计算环境的物理节点上,它封装了节点的虚拟机监控器(VMM),并提供SOAP及RESTful Web服务接口的网络控制能力。
2.虚拟资源信息服务(Vshedule):汇总和收集计算环境中的物理机及虚拟机状态,并为资源分配等机制提供信息。
3. 虚拟网络管理模块(Vswitch):为虚拟计算环境提供虚拟网络支持,定义了虚拟路由器、虚拟交换机等设备,按照用户需要创建虚拟网络拓扑,跨域连接虚拟机。
4. 调度器(Vstore):根据用户提交的虚拟机、虚拟网络和虚拟集群等虚拟资源的创建请求,在物理资源上综合调度,分配资源并创建对应的网络连接。
5. iVIC Portal及API:提供一个访问iVIC功能的用户界面,通过多种形式的API可将系统功能集成到第三方程序中。
SOAP通信
SOAP(Simple Object Access Protocol),即简单对象访问协议,是一种轻量的、简单的、基于扩展的标记语言XML的协议。SOAP可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议HTTP、简单邮件传输协议SMTP、多功能因特网邮件扩充服务MIME等,它还支持从消息系统到远程过程调用等大量的应用程序。SOAP消息的格式如下:
SOAP标头
< SOAP ENV: Envelope A ttributes>< SOAP ENV: Body A ttributes>
< /SOAP ENV: Body>
< /SOAP ENV: Envelope>
功能模块
该课程教学网站的主要功能有用户管理、课程通知、博客、资源共享、课件下载、在线交流、站内搜索和上机实践,见图2。
1. 用户管理:用于系统的安全控制和权限控制。用户可填写ID、邮箱和密码进行注册,通过认证的方式等待管理员确认或接受邮件认证。网站的管理员将用户分配到不同的组,对其权限进行管理。
2. 课程通知:用于及时公布教学相关信息,如课程介绍、教学大纲、指定教材。教师或者管理员可以创建、修改、删除通知信息,并将其发布到网站,供学生查看。
3. 博客管理:用户可以在线撰写博客,分享学习心得和感受。
4. 资源共享:用户可将一些学习相关的学习资料发布在自己的博客或其他内容主题中,方便其他用户下载使用和学习。
5. 课件下载:管理员或者教师可以将学习课件发布到网站对应栏目中,供学生下载学习。
图2 系统功能
6. 在线交流:以论坛的形式提供了学生之间及师生之间学习交流的空间。
7. 站内搜索:用户可以方便地搜索站内的信息和其他用户。
8. 信息聚合:网站为用户提供信息订阅功能,可以订阅网站提供的RSS、RDF和ATOM种子,这样用户就可以定期获得网站内容的更新信息。
9. 互助问答:提供了一个问答平台,提问者发布问题并可以设置期限,其他用户可以为其解答,最后由提问者选择一个最满意的答案。
10. 在线情景帮助:根据用户访问的不同页面为其提供不同的帮助文档。
11. 上机实践:教师根据课程要求,在操作系统虚拟镜像中定制HP-UX,该虚拟机镜像文件即为课程模板,然后通过iVIC搭建的虚拟集群,将课程模板存储在iVIC的虚拟节点上。学生登录后,可以看到教师为其开设的课程信息,并可以进行相关的教学实践。Drupal扩展设计
采用虚拟机技术使虚拟服务器能够在同样的硬件资源下运行多个操作系统和应用程序,从而有效地提高服务器的利用率,减少服务器的数量,降低服务器的能耗,进而降低运营成本。本文扩展了Drupal对虚拟机的支持,提供了Drupal用户和iVIC虚拟机的信息管理功能,可以实现虚拟机的创建、启动、停止以及删除。Drupal页面通过创建HTTP连接,发送包含SOAP请求的HTTP报文实现对iVIC的SOAP接口调用。iVIC对PHP封装的SOAP控件发送的消息无响应,因此采取直接建立HTTP请求发送SOAP报文的方法。SOAP调用iVIC接口如图3所示。
上机实践的具体操作流程如下:首先对用户信息进行验证,如果通过,则查询数据库中用户的虚拟机列表信息,如果有虚拟机的记录,就显示各个虚拟机的使用状态,如果没有,用户可以通过Drupal页面创建虚拟机,创建后更新数据库记录。当用户需要使用虚拟机时,系统会从iVIC后台获取该虚拟机的VNC(Virtual Network Computing)连接,从而获得该虚拟机的远程连接,用户可以在虚拟机上进行教学实践等活动。此外,用户还可以根据需要删除虚拟机,系统会删除其数据库中的相应记录。
图3 SOAP调用iVIC接口
开发环境
为了使系统具有良好的跨平台性,并且和Drupal框架紧密耦合,本文中Drupal系统的扩展开发及与虚拟机交互部分的开发是基于Linux debian5.0的环境,选择PHP作为开发语言,Web容器使用Tomcat,数据库使用MySQL5.1。能够较好地保证系统的可移植性和健壮性。Drupal固有功能的实现
用户管理、博客、资源共享、在线交流、站内搜索、内容更新、问答平台和帮助功能分别采用Drupal的自有功能模块User、Blog、Upload、论坛、Search、Aggregator、Topic/Answers和Context Help实现。
课程通知主要包括了课程介绍、教学大纲、指定教材和教师介绍,这些信息的发布可以利用内容类型Page或者Story来实现。但是,为了方便构建自己的内容节点列表和它们在页面中的显示方式,可以引入CCK模块为每种类型的信息创建一种新的内容类型。所有需要的内容类型设置完毕后,还需要通过Views模块定义节点的显示方式。Drupal扩展功能的实现
1. 创建虚拟机:解析虚拟机服务器地址,通过解析成功的服务器地址,建立与服务器的通信。拼接iVIC可以识别的SOAP报文格式,调用创建虚拟集群函数deployV,发送报文消息。创建成功后,返回被部署的虚拟机ID,将虚拟机名称和用户写入数据库。程序代码如下:
$url ='http://219.224.171.69:8080/vsched'; //虚拟机服务器的IP地址$url2 = parse_url($url); //解析服务器地址
$fsock = fsockopen($url2['host'], $url2['port']); //与服务器通信
……
$SOAPBODY = '
$SOAPBODY.= '
$SOAPBODY.= ‘’.” ”; //虚拟机名称
$SOAPBODY.= ‘’.” ”;//创建虚拟机所需参数
$SOAPBODY.= ‘’.” ”;
$SOAPBODY.= ‘’.” ”;……
$out = “”;
while($buff = fgets($fsock, 2048)){ //返回被部署虚拟机的ID
=$out .= $buff;
}
……
global $user;
db_query(“INSERT INTO {vcluster} (user, vm_uuid) VALUES(‘%s’,’%s’)”,$user->name,$re);//将虚拟机名称和用户写入数据库?>
2. 启动虚拟机:从数据库中查找当前用户对应虚拟机的UUID,解析虚拟机服务器地址,并建立与服务器的通信。拼接iVIC可以识别的SOAP报文格式,调用启动虚拟集群函数startV,传入虚拟机的UUID,发送报文消息。启动成功后,返回True值。程序代码如下:
global $user;
$result = db_query("SELECT vm_uuid FROM {vcluster} WHERE user ='%s'", $user->name); //用户认证
$o = db_fetch_array($result); //获得虚拟机UUID值
$url ='http://219.224.171.69:8080/vsched';
$url2 = parse_url($url);
$fsock = fsockopen($url2['host'], $url2['port']);……
$SOAPBODY = '
$SOAPBODY.= '
$SOAPBODY.= ''." "; //传入虚拟机的UUID值……
$in=$head.$SOAPENV.$SOAPBODY;
if(!@fwrite($fsock, $in, strlen($in))){fclose($fsock);
return false;
}
?>
停止虚拟机和删除虚拟机与上述过程类似,区别在于需要调用停止虚拟集群函数stopV和删除虚拟集群函数undeployV。
3. VNC连接:用来加载VNC的ActiveX控件,显示远程桌面。程序代码如下:
function rsChange ()
{ var ax = document.all.vnc;
if ( ax.readyState == 4 )
{ if ( ax.IsInitialized == false )
{ window.setTimeout( "rsChange();", 100 ); } //设置VNC与服务器连接时间
else
{ ax.Server = "219.224.171.69:0"; //VNC所访问的服务器地址
ax.Connect();} } }
通过构建Web2.0网站,利用课外作业引导和督促学生积极开展课外学习。通过在网站上发布课件和各种学习资料,辅助学生进行自我学习。基于虚拟机技术搭建网络实验平台,使得学生的学习不受到实验室安排的限制,可以根据自己的需要随时随地进行练习。构建论坛和互助问答功能,提供学生和学生、教师和学生之间畅通的交流渠道,及时对学生进行指导和帮助,从而达到较好的学习效果。
虚拟机技术不仅适用于本课程的上机实践,而且它给出了一个改变学校现有实验模式的方向,即学校不用建设多个实验室和购买大量的服务器,只需要使用虚拟机技术配置不同的环境就可以满足多门课程的上机需要。因此,本文对于未来学校的实验课和实验室建设也将起到很好的促进作用。