虚拟实验环境中协同支撑的设计与实现

2011-09-17 07:34虞江锋刘兰英盛羽王建新
关键词:协同工作客户端消息

虞江锋,刘兰英,盛羽,王建新

(1. 浙江广播电视大学 信息与工程学院,浙江 杭州,310030;2.中南大学 信息科学与工程学院,湖南 长沙,410083)

虚拟实验环境对于节省教育成本、推进实验教学改革具有广泛而重要的应用价值,在现代远程教育领域有着广阔的发展前景,因此,虚拟实验环境的建立一直是网络计算技术领域的热点研究课题[1−3]。目前,国内外的相关研究组织和个人对虚拟实验环境的建设展开了大量而深入的研究工作,如:利用Java语言和数字信号处理技术相结合开发的仿真系统 J-DSP[3],以组件技术构架并通过 CORBA技术实现 Java 与Matlab 之间的无缝联接的基于 Internet 的数字图像处理仿真模型系统[2,4],基于组件的实时入侵检测虚拟实验室系统[5];采用纯软件技术将各种常见的集成电路芯片封装成组件;开发出基于组件的计算机组成原理虚拟实验室[6]、基于组件的模型机虚拟实验平台(CPU_VLAB)[7]等。然而,目前已经建成的虚拟实验室在很多方面仍然存在一定缺陷和不足,无法满足实验用户复杂多变的应用需求。主要体现在:这些虚拟实验室产品都没有对用户的协同工作提供支持,很少有虚拟实验平台能够提供不同实验者之间的实验指导和实验协同设计功能,因此,现有的虚拟实验平台对实现人与人之间交互与协同显得无能为力。而协同工作能力已经成为当代人才必备的能力之一,同时,协同工作功能在虚拟实验室中的实现还有利于师生实验过程的互动以及学生之间的相互学习,因此,在虚拟实验室中提供协同工作的支持有着重要的意义。同时,现阶段国内外科研机构在协同工作、分布计算、决策支持系统等方面进行了大量细致的研究工作,并且借助实际研究背景开发出了原型系统,如文献[8−9]针对分布式环境中的协同问题进行了研究,文献[10]就协同设计中的群体感知等问题提出了解决方案,建立了模型系统,文献[11]对视频会议中协同问题展开了研究,文献[12]中基于 Applet[13]构建了动态的实时协作框架,在Applet之间复杂的通信方面提出了较好的通信策略,为远程的虚拟实验室协同工作提供了很好的方法。但是,将协同技术直接应用于真正应用中的虚拟实验环境中的相关研究还比较欠缺,而虚拟实验环境下的协同设计的权限控制与管理以及协同机制等方面都有许多问题需要进一步研究和深入探索。

针对以上问题,本文作者将协同技术与虚拟实验环境技术相结合,以虚拟实验为基础,建立网上协同虚拟实验室,在基于网络环境的虚拟实验环境中增加支持网络协同工作的支撑功能,使得多个实验者之间可以按照一定的规则实现协同实验,提供实时的、真实的虚拟实验系统。

1 虚拟实验室中协同支撑的架构设计

基于虚拟实验室的协同支撑环境的整体架构如图1所示。平台采用B/S架构模式,客户端用户只需要安装浏览器,其他的工作都在服务器部署完成。系统客户端采用浏览器嵌入Applet的方式实现,基于Java Applet的客户端程序主要提供虚拟实验组件的搭建平台和协同命令的请求及执行等服务。Web服务器端程序主要提供已经开发好的经典实验文件库和系统开发好的实验组件库,客户端可直接通过浏览器下载应用这些库资源,应用服务器主要完成整个系统中的应用逻辑处理,用户管理、协同控制以及其他辅助服务功能。

系统主要分为Applet客户端和服务器端两部分,客户端主要包括3个功能模块:虚拟实验设计、协同工作支持和相关通信模块。虚拟实验设计模块中用户可以自主地进行实验组件的搭建,并通过运行实验检验结果的正确性。协同工作支持模块中完成在协同实验模式下的客户端工作,如发送和接收服务器消息,解析命令,调用本地方法等,由通信模块完成实验设计平台与协同支持平台的通信,以及客户端与服务器之间消息的互通。服务器端的Web服务器端通过资源部署支持多用户同时在线并发访问Web服务器、下载Applet实验客户端。应用服务器主要包括3个功能模块:用户管理、平台操作权管理和实验同步控制。其中,平台操作权管理和同步控制是应用服务器中最主要的两大功能模块。操作权管理模块结合用户管理模块对实验室平台的操作权限进行控制,结合虚拟实验室主要用于演示教学活动的应用实际,本系统中通过将共享对象的修改访问权加锁的方法,保证在某一段时间内授予系统某个唯一的访问者,从而保证数据的一致性。同步控制模块主要用于保证协同中的客户端实验数据的一致性,针对客户端在协同进行中途加入协同组或者因网络原因等情况,在同步控制模块进行检测,并将最新的同步数据反馈至客户端。应用服务器与客户端的功能模块如图2所示。

图1 协同支撑环境架构Fig.1 Collaborative support environment architecture

图2 主要功能模块图Fig.2 Core functional module diagram

2 客户端协同设计与实现

由图1可以看出,客户端支持的实验方式主要有2种:单独实验和协同实验。单独实验模式下,用户可自主选择虚拟实验平台中组件,将相应引脚进行连接,完成实验的设计搭建,并可以动态设置相关实验组件状态,实验平台通过图形化界面生动显示运行实验的结果,检验实验数据的正确性。用户可以根据需要进入协同实验模式,在协同实验模式下,在线用户之间可以进行协同实验、作业提交及语言交流讨论等交互性活动。协同模式下,有实验平台操作权的用户在对平台进行操作时,客户端产生本地操作响应,同时将相关的操作信息生成命令发送至服务器,经服务器转发至其他用户,使每个操作都能实时的体现于其他参与者的机器上。对协同状态下没有操作权限的用户,在接到操作命令消息时,通过消息解析调用平台相关方法,执行相同的操作,并在本地客户端显示执行结果,保证客户端在协同状态中实验数据的一致性。为实现对用户协同工作的支持环境,在客户端中加入协同信息面板及相关通信模块,它记录用户连接状态,实时显示出当前协同用户及用户交互消息及系统消息,同时负责协同相关信息的传送、接受和执行处理。协同信息面板采用Java语言实现,与实验设计平台在层次上平行,在 Java Applet中整合实现,通过嵌入Web网页的方式整体呈现于用户面前。因此,在协同平台与实验设计平台中的信息通信及交互上实现了无缝连接。其中客户端的消息通信机制与消息封装和解析是客户端在协同设计实现过程中考虑的核心问题:

2.1 消息通信机制

在协同模式下,客户端之间的实时的交互及实验平台操作描述等协同信息通过客户端的消息通信模块进行发送和接收,客户端之间通过Socket与服务器保持双向并且持续的连接,方便地实现客户端与服务器之间信息通信的不断更新。在信息传输协议上,采用基于 TCP/UDP的传输协议相结合的方式,既保证客户端通信质量同时实现即时通信的实时性,客户登录等信息采用TCP进行传输,客户端之间即时通讯信息采用UDP传输协议进行发送和接收,该模块采用多线程机制,当有实验文件需要传输时,建立文件传输线程专门用于文件通信,各个线程的控制流彼此独立,大大提高了消息处理的并发性和效率。

2.2 消息封装与解析

合理有效的消息格式设置是完成客户端命令生成与解析完成通信的重要组成部分,本系统中用Message类用于描述系统中各种消息,系统将每个消息视为一个二元组对象:。其中:MsgFlag是消息类型标志,MsgObj表示消息体。协同系统中Message的主要类型有 string和 experiment,string类型的消息为字符串信息,进一步分为平台操作命令信息、登录信息、用户交互信息等;experiment类型的消息用于保障协同中实验数据的同步。由于MsgObj的设置可以是一个Message对象,而且内容长度可以灵活设置,方便地用于将系统消息的进一步细分,因而适应系统中消息多样化需求。

客户端在接收到消息后,依据系统自定义规则进行消息解析,并调用执行相应方法,完成相同的平台操作,例如操作用户在实验平台上添加一个实验组件,主要的实现代码示例如下:

3 应用服务器的设计与实现

协同支撑平台的应用服务器是实现协同支撑的枢纽。应用服务器采用了多线程并发处理的方式在服务器建立一个线程池,当有客户端连接时就在池中开辟一个线程为它服务,同时服务器保存客户端的一些基本的信息,如登录客户的名称、登录时间等,实现了用户的登录控制和管理,并检测客户端网络连接情况。应用服务器负责整个系统中消息传递的中转,为了避免大量消息到达时处理不过来而导致丢失的情况,服务器中使用消息队列,服务端接收到消息后,压入接收缓冲区,接收缓冲线程分析其中结构,根据类型实例化出相应消息对象,确认消息的接收方和发送方,得到接收方后再将消息封装好压入到发送队列。

实验平台的操作权限控制和实验数据一致性保证是实验平台实现协同支撑要解决的2个核心问题。在分布式协同环境中,由于不同用户可以在参与协同工作的不同计算机上同时操作,因此,哪些操作有效,哪些操作无效的选择与控制就变得非常重要,同时,新成员加入已有的实验组,新成员的实验平台以及实验平台操作锁等相关状态为该实验组的当前状态,而不是新建状态。系统平台针对这些问题,采取了相应的控制策略。

3.1 实验平台操作权控制策略

系统采用实验平台的复制式应用共享策略,参加协同的每个计算机上都通过浏览器打开运行结构相同的虚拟实验室客户端,用户对虚拟实验平台的操作(例如鼠标、键盘输入消息等),通过应用程序共享技术被复制到其他计算机上,在其他计算机上产生同样的输出结果,使协同中每个用户能够感觉到其他人的存在,达到多用户应用程序的网络化协同。图3所示为虚拟实验平台共享的实现结构。由图3可以看出,客户在实际运行的相当于多个结构相同的客户端拷贝,协同的结果在本地产生,因而在这种机制中,要选择当前获得操作权限的用户的输入作为所有用户节点实验平台的输入,该功能由操作共享策略和权限模块共同完成。对具有操作权限的用户,执行命令回放模块不起作用,其本地输入直接送往实验平台处理,同时还要把输入消息录制下来,生成命令消息并发送到没有操作权的用户节点。而对没有操作权的用户节点,其输入被屏蔽掉,本地执行模块不起作用,实验平台不对本地输入作响应,应用服务器把具有操作权限的节点发送过来的消息通过输入回放模块送往应用程序生成输出结果。

图3 虚拟实验平台共享的实现结构Fig.3 Share-structure of virtual lab platform

系统采用粗粒度操作权加锁的方法实现虚拟实验室平台的权限控制,将整个实验平台作为最小的加锁对象,在某一段时间内只授予某个唯一的操作者对实验平台进行操作,在客户端和服务器端中分别有一个操作权标志变量,它是一个布尔变量,由它来控制谁拥有操作权。当用户事件送到网络上之前,需要检测该标志的状态,只有在它使能的状态下,事件消息才能分发给其他参与者。否则,其他参与用户可以实时感知协同中操作效果,但是对平台的操作不会发送给其他用户,从而使对虚拟实验平台的操作得以串行化,进而保证同步数据的一致性。

3.2 协同同步机制

应用服务器中实验信息同步控制模块是保证实验操作及数据一致性的重要组成模块。同步协同支撑平台可以为用户提供在线的、实时的讨论和实验操作的同步,但是,在 Internet网络连接条件下,网络带宽和传输速率成为实现同步协同的瓶颈,因此,同步控制模块添加了服务器定时轮询机制,保障用户网络通信质量,如果在设定时间内的操作同步都没有到达,同步模块将其视为新用户,及时完成其本地实验面板的更新,保证参与协同用户实验操作的流畅。

当服务端有新的用户参与到协同组时,同步控制模块检测协同实验是否正在进行,若没有正在进行的协同实验,则新用户实验平台保持新建状态,否则,由同步控制模块发送同步需求命令给当前有操作权的用户,通知处理它完成新用户的实验同步的处理,使得新用户的实验平台与当前协同实验平台保持同步。此时具有操作权的用户此时需要完成以下工作:暂停下一步将要进行的平台动作,将当前最新的实验状态封装为一个系统消息,即为experiment类型的消息,并指定接收者为新用户。新用户接收到相应experiment消息并解析消息并更新运行自己实验平台面板状态,从而与协同组用户实验状态达到同步。在完成新用户的迟到信息的同步处理之后,新产生的动态的实验同步信息将在协同组中统一转发执行,使整个协同组保持同步处理状态。应用服务器处理实验同步的交互序列图如图4所示。

图4 实验同步处理模型Fig.4 Experimental synchronous process model

4 运行实例

以在组成原理虚拟实验室中实现协同工作为例,给出在虚拟实验环境中实现协同工作支撑的实例。计算机组成原理虚拟实验室将各种常见的集成电路芯片封装成组件的形式,实验者通过选取组件、搭建实验流程、运行并查看实验结果的仿真实验过程,验证单个芯片的功能或进行组合逻辑测试,了解计算机的信息存储以及逻辑运算的原理。由于组成原理实验原理复杂,实验组件繁多,在组成原理虚拟实验环境中实现协同工作具有一定的代表性。

将经过数字签名的Applet客户端应用程序和相关资源程序部署在Tomcat Web服务器上,同时开始应用服务器等待用户连接,协同工作支撑的应用服务器中可以进行服务器端口的设置,并用表格的形式记录当前连接用户的信息(包含用户机IP,用户名,登录时间等),利用可视化功能按钮方便的实现用户管理功能。同时实时显示应用服务器公告信息,标记当前操作权用户等协同工作相关信息,并生成登录日志,以备登录历史查询使用。

客户端通过打开浏览器下载Applet客户端,进入虚拟实验环境中,通过客户端协作信息面板与应用服务器建立连接,用户进入协同实验模式,实验平台操作权闲置时,任何人都可以申请对平台进行操作。取得操作权限之后,用户对虚拟实验平台的操作将经由服务器以命令的形式转发至其他协同用户,保证协同成员及时同步操作。图5所示为在协同过程中的3个用户的客户端显示状态。其中,具有操作权限的test1用户通过拖拽的形式将实验组件添加到实验面板中,并将组件用导线连接,同时,另外的协同中的用户同时执行应用服务器转发的命令,其用户界面上出现相同的组件并在实验系统中建立了相应的组件连接关系。

图5 虚拟实验室中协同工作运行实例Fig.5 An instance of collaboration in Virtual Lab

5 结论

(1) 协同支撑环境与虚拟实验室平台实现无缝连接,提高了师生之间以及学生之间的交互性,增强了虚拟实验室用户的参与感和沉浸感。

(2) 协同支撑环境模块化清晰,具有通用性,以此为基础可以快速应用到多个虚拟实验室,如数字通信原理、数字信号处理等课程的虚拟实验室,为现代远程教育中基于网络的协同虚拟实验室的应用开发提供了参考。

[1] Spanias A, Atti V, Papandreou-Suppappola, A, et al. On-line signal processing using J-DSP[J]. IEEE Signal Processing Letters, 2004, 11(10): 821−825.

[2] 王建新, 陆炜妮, 王伟平. 基于组件数字图像处理仿真系统的设计与实现[J]. 系统仿真学报, 2004, 16(6): 1213−1216.WANG Jian-xin, LU Wei-ni, WANG Wei-ping. A component-based simulation system for digital image processing[J]. Journal of System Simulation, 2004, 16(6):1213−1216.

[3] Spanias A, Atti V. Interactive online undergraduate laboratories using J-DSP[J]. IEEE Transactions on Education, 2005, 48(4):735−749.

[4] WANG Jian-xin, Liu Li-juan, JIA Wei-jia. The design and implementation of digital signal processing virtual lab based on components[C]//International Conference of Web-Based Learning (ICWL2005). Berlin: Springer-Verlag, 2005: 291−301.

[5] 王建新, 安莹, 吴国政, 等. 基于组件的实时入侵检测虚拟实验室的设计与实现[J]. 系统仿真学报, 2006, 18(11):3283−3286, 3296.WANG Jian-xin, AN Ying, WU Guo-zheng, et al. Design and implementation of real-time ids virtual lab based on component[J]. Journal of System Simulation, 2006, 18(11):3283−3286, 3296.

[6] 王建新, 张丽媛, 盛羽, 等. 基于组件的计算机组成原理虚拟实验室的设计与实现[J]. 系统仿真学报, 2008, 20(9):2469−2474.WANG Jian-xin, ZHANG Li-yuan, SHENG Yu, et al. Design and implementation of principles of computer organization virtual lab based on component[J]. Journal of System Simulation,2008, 20(9): 2469−2474.

[7] 盛羽, 王建新, 谢朝晖. 模型机虚拟实验平台的设计与实现[J]. 中南大学学报: 自然科学版, 2009, 40(6): 1609−1615.SHENG Yu, WANG Jian-xin, XIE Zhao-hui. Design and implementation of model computer virtual lab[J]. Journal of Central South University: Science and Technology, 2009, 40(6):1609−1615.

[8] Tran M H, Raikundalia G K, Yang Y. Using an experimental study to develop group awareness support for real-time distributed collaborative writing[J]. Information and Software Technology, 2006(48): 1006−1024.

[9] Morris M R, Fisher D, Wigdor D. Search on surfaces: Exploring the potential of interactive tabletops for collaborative search tasks[J]. Information Processing & Management. [EB/OL].[2009.11.5]http://www.elsevier.com/locate/infoproman.

[10] SHEN Wei-ming, HAO Qi, LI Wei-dong. Computer supported collaborative design: Retrospective and perspective[J].Computers in Industry, 2008(59): 855−862.

[11] Ertl B, Fischer F, Mandl H. Conceptual and socio-cognitive support for collaborative learning in videoconferencing environments[J]. Computers & Education, 2006, 47(3):298−315.

[12] Jara C A, Candelas F A, Torres F, et al. Real-time collaboration of virtual laboratories through the Internet[J]. Computer &Education, 2009, 52(1): 126−140.

[13] Eckel B. Java编程思想[M]. 京京制作室, 译. 北京: 机械工业出版社, 1999: 15−35.Eckel B. Thinking of java[M]. Jingjing Studio, trans. Beijing:Press of Mechanical Industry, 1999: 15−35.

猜你喜欢
协同工作客户端消息
一张图看5G消息
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于BIM体系的造价管理优化研究
高校辅导员与班主任协同工作探析
消息
消息
消息