专利名称:一种面向多学科虚拟实验平台的xml增量传输与交互方法
技术领域:
本发明属于计算机应用领域,具体涉及一种面向多学科虚拟实验平台的XML增量传输与交互方法,该方法适合于实时交互频繁且数据传输量大的虚拟实验环境,提出了一种新的虚拟实验前后台交互方法。
背景技术:
随着虚拟技术和网络技术的飞速发展,通过信息网络构建的虚拟实验室已经成为可能。虚拟实验教学可以为高校解决元器件不全,高档设备器件奇缺,实验管理困难等问题,同时也有利于学生的创新思维发展,提高学生实践能力,所以为学生提供一个实时和友好的虚拟实验环境越来越重要。XML(Extensible Markup Language)即可扩展标记语言,它与 HTML—样,都是 SGML (Standard Generalized Markup Language,标准通用标记语言)。XML 是 Internet 环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。XML语言有很好的开放性,通过XML,我们可以在不兼容的系统之间交换数据;更重要的是XML允许通过 HTTP、TCL/IP和其他传输协议交换数据;基于DOM (Document Object Model)的XML解析可以很容易对XML文档实现CRUD(Create、Read、Update and Delete)操作。XML的这些特性, 为虚拟实验前台客户端与后台建模仿真工具的数据通信提供了可靠的保障。多学科虚拟实验平台中,客户端的虚拟实验场景由XML描述组成,运行实验场景需要将前端XML场景发送到后台计算,由后台计算节点解析XML,并对场景仿真建模,求出计算结果。但是由于XML具有自我描述性,使得XML显得冗长,给数据的存储和传输带来极大的不便。一个虚拟实验场景XML文件有几百K的大小,与后台的每一次交互都需要传输大量数据,交互实时性降低。特别是在以下的应用场景时,这种数据传输造成的网络延迟问题将更加暴露无遗。 虚拟实验用户在做实验过程中,需要实时向后台请求智能指导,并及时返回指导信息。每当用户修改了实验场景时,智能指导需要前台发送完整的XML场景数据到后台。 特别当用户多且频繁修改场景时,这种大数据量的网络传输必然造成严重的网络延迟。 运行实验、保存实验和恢复实验等这些实验操作每次都需要向后台仿真计算节点传输的场景数据,而且一次实验过程中,这些操作会被多次使用,这种大数据量的传输引起的网络延迟必然会影响实验的交互实时性。由于XML数据自身的特点,决定了其数据冗余较大,由此造成了传输效率的降低。 针对这些问题,目前提出了许多基于XML数据的压缩技术,比如Xmill、XMLPPM、XMLZip, XPRESS和XGRIND等等。这些压缩方法都有很好的压缩率,可以大大减少网络传输的数据量,提高网络传输效率,但一个几百K大小的XML文件需要几百毫秒的压缩和解压缩的时间。尽管采用压缩技术可以很好地降低网络传输延迟,但却增加了额外的压缩与解压缩处理时间。虚拟实验过程中还存在一个问题,如果用户实验过程中希望回退到前几步的实验场景,可以采用把场景保存到数据库的方法,但这样写数据操作频繁,效率不高,且一次完整实验过程中无用场景数据过大,浪费大量空间。对于以上问题,我们发现虚拟实验的XML场景数据是主要由各种元器件以及之间的连接关系组成的,当修改虚拟实验场景时,可能仅仅是修改了场景中某个器件的属性值, 或者增加了一个新的元器件等等,而这些操作相当于在XML结构中,修改了末端节点的内容或者增加了一个新的节点。基于虚拟实验自身的这些特征,提出了一种XML增量传输与缓存的方式来解决XML数据过大导致网络延迟问题,并在服务端使用二级缓存方法,实现场景的回退功能。
发明内容
本发明的目的在于提供一种面向多学科虚拟实验平台的XML增量传输与交互方法,该方法可以减少虚拟实验交互过程中的数据传输量,保证整个实验过程的实时性。本发明提供的一种面向多学科虚拟实验平台的XML增量传输与交互方法,包括如下步骤(1)初始化客户端虚拟实验场景时,服务端将初始场景XML数据缓存,并根据连接值建立缓存地址索引;同时将XML数据写入磁盘,也根据连接值建立文件索引;(2)虚拟实验客户端检测用户的各种实验操作动作,并将用户的实验命令以及增量的数据封装起来,然后发送到服务端;(3)服务器接收到客户端发送来的数据后,解析数据得到实验命令、操作动作以及XML变动数据;根据解析出的实验命令,并判断是否为智能指导命令;如果是智能指导命令,转入步骤;如果不是智能指导命令,则转入步骤(5);所述智能指导是指根据用户搭建的实验场景智能地给出用户帮助信息,指导用户完成实验任务;(4)根据增量数据和缓存的XML数据生成新的XML数据,更新缓存、磁盘文件以及相应的索引,并进行智能指导服务,转入步骤(7);(5)判断实验命令是否为回退场景命令,如果是,则根据回退次数和索引信息找到对应的虚拟实验场景XML文件,转入步骤(7);如果不是,则跳转到步骤(6);所述回退场景是指将实验场景回退到若干次之前的状态;(6)对于虚拟实验的其它命令,则从缓存中获取XML数据,并发送至相应的应用服务器;(7)将服务端得到的处理结果发送至客户端。本发明为提高虚拟实验过程中交互的实时性,采用了一种基于XML的数据增量传输机制,大大减小了网络数据传输量,并缓存服务端的XML场景数据,提出一种新的虚拟实验实时交互方法。本发明具有以下几个特点(1)实时性好。采用一种基于事件响应的XML增量传输机制,当实验场景发生变化时,实时向后台发送增量数据。鉴于XML结构的特征,这种增量数据的传输往往只需要传输一个节点数据,或者更多的只是一个节点路径与属性值的数据,大大减少了网络传输的数据量,降低网络数据传输时间,具有很好的交互实时性。这种机制强调空间换取时间,以缓存数据达到减少网络传输时间的目的。(2)为后台仿真计算提供统一的接口,具有很好的扩展性和解耦性。将前台所有的仿真计算请求由服务端调度分发给后台仿真计算节点,降低了前台与后台仿真计算的耦合度。并且此交互模式可以应用到各种支持XML的仿真建模工具中,如Modelic^Matlab、 MateflotLabvei等等,适合多领域、多学科虚拟实验的统一建模,可扩展性强。(3) 一种新的虚拟实验前后台交互模式。传统的虚拟实验客户端需要与后台非结构化存储服务器、仿真计算服务器、Web服务器等等交互通信,实验交互的复杂度高,不易统一管理和维护。本方法中采用约定的通信协议,可以将前台各种服务请求(非结构化存储服务、Web服务、仿真计算服务等等)统一由服务端解析并转发给其它应用服务器处理,降低了实验交互的复杂度,拥有良好的可用性。(4)采用二级缓存实现场景回退。将有限步骤之内的XML数据从内存再缓存到磁盘,可以实现场景的回退,并采用连接监听回收机制,提高内存和磁盘空间有效利用率。当检测到连接断开时,通过缓存索引和文件索引可以迅速定位内存数据与磁盘文件,回收内存和磁盘空间,并更新索引。
图1是本发明方法的总体流程图。图2是虚拟实验初始数据缓存流程图。图3是服务端解析并处理实验命令的流程图。图4是智能指导请求处理的流程图。
具体实施例方式本发明根据XML结构特征以及虚拟实验特点,引入了一种面向多学科虚拟实验平台的XML增量传输与交互方法,此方法将虚拟实验交互过程中的实验数据增量传输,并在服务端建立缓存,从而大大减少网络传输数据量,提高虚拟实验交互的实时性,并提出了一种新的虚拟实验前后台交互方法,具有很好的扩展性和解耦性。下面结合附图和实例对本发明作详细的说明。如图1所示,本发明方法总共分为5个步骤,具体描述如下(1)初始化客户端虚拟实验场景时,服务端将初始场景XML数据缓存,并根据连接值建立缓存地址索引;同时将XML数据写入磁盘,也根据连接值建立文件索引。其中,连接值(Connection Value)是客户端与服务端建立的连接的唯一标识值, 服务端每建立一个TCP连接,都会生成一个连接值。(2)虚拟实验客户端检测用户的各种实验操作动作,并将用户的实验命令以及增量的数据封装起来,然后发送到服务端。用户在虚拟实验界面中的各种实验操作动作,比如点击运行实验,添加一个新器件,删除一根连接线等等,可以通过客户端事件响应的方式检测到。虚拟实验中的实验命令主要包括运行实验、暂停实验、保存实验、停止实验、请求智能指导、回退场景等等。其中,运行实验是指后台仿真计算虚拟实验XML场景数据并返回仿真计算结果;保存实验指将客户端虚拟实验场景保存到数据库中;智能指导是指根据用户搭建的实验场景智能地给出用户帮助信息,指导用户完成实验任务;回退场景是指将实验场景回退到若干次之前的状态。数据封装格式由实验命令、操作动作、XML变动数据和校验位组成。例如当用户修改了实验场景中某个器件的属性,客户端就会请求智能指导,操作动作为修改节点属性值, XML变动数据为节点路径与修改后属性值,将这些数据封装发送给服务端。(3)服务器接收到客户端发送来的数据后,解析数据得到实验命令、操作动作以及 XML变动数据。根据解析出的实验命令,并判断是否为智能指导命令。如果是智能指导命令,转入步骤;如果不是智能指导命令,则转入步骤(5)。应用服务器提供的服务主要有仿真计算服务、数据库存储服务和智能指导服务等寸。(4)根据增量数据和缓存的XML数据生成新的XML数据,更新缓存、磁盘文件以及相应的索引,并进行智能指导服务,转入步骤(7)。(5)判断实验命令是否为回退场景命令,如果是,则根据回退次数和索引信息找到对应的虚拟实验场景XML文件,转入步骤(7);如果不是,则跳转到步骤(6)。(6)对于虚拟实验的其它命令,则从缓存中获取XML数据,并发送至相应的应用服务器。(7)将服务端得到的处理结果发送至客户端。步骤(1)具体流程如图2所示,该步骤包括下述过程(1. 1)服务端将XML数据缓存,然后从连接哈希表中获取连接值,根据连接值查询缓存索引,判断是否存在此连接值的索引,如果不存在,则新添加一条新索引记录,即建立缓存索引;如果存在,则更新缓存索引。(1. 2)服务端首先通过连接值查询文件索引,判断是否存在该连接值的文件索引, 如果不存在,则转入步骤(1.3);如果存在,则转入步骤(1.4)。(1. 3)将XML数据写入磁盘,并根据连接值建立文件索引;(1. 4)判断是否已经存在设置的最大条数索引记录,如果存在,则删除文件名称数值最小的那个XML文件。然后将缓存的XML数据写入磁盘,并根据最大文件名称数值加一命名文件名,然后更新文件索引。XML文件的命名由连接值、写入次数OVrite Time)、扩展名(XML)组成,此命名方式可以根据连接值和写入次数快速找到需要的XML文件。步骤(4)具体流程如图3所示。(4. 1)服务端根据操作动作(增加、删除或者修改)与新增数据,合成一个新的 XML场景。(4. 2)服务端缓存新生成的XML场景,并回收前一次的缓存空间,然后更新缓存索引。(4. 3)将缓存的XML数据写入磁盘,并更新文件索引,具体处理流程如下。(4. 3. 1)服务端判断此连接值的文件索引中是否已经存在最大条数的索引信息, 如果存在,转入步骤(4. 3. 2);如果不存在,转入步骤(4. 3. 3)。(4.3.2)删除最早写入磁盘的XML文件,并更新文件索引。(4. 3. 3)将缓存的XML数据写入磁盘,并根据最大文件名称数值加一命名文件名, 然后更新文件索引。(4. 4)服务端进行智能指导服务,得到智能指导结果。步骤(5)具体流程如图4所示。
(5. 1)解析实验命令得到回退数,文件索引最大值减去回退次数并加一得到XML 文件名。(5. 2)查询文件索引信息,判断是否存在此文件名,如果存在,转入步骤(5. 3);如果不存在,转入步骤(5. 4)。(5. 3)根据索引信息找到对应的虚拟实验场景XML文件。(5. 4)给出回退失败提示信息。本发明不仅局限于上述具体实施方式
,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式
实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
权利要求
1.一种面向多学科虚拟实验平台的XML增量传输与交互方法,包括如下步骤(1)初始化客户端虚拟实验场景时,服务端将初始场景XML数据缓存,并根据连接值建立缓存地址索引;同时将XML数据写入磁盘,也根据连接值建立文件索引;(2)虚拟实验客户端检测用户的各种实验操作动作,并将用户的实验命令以及增量的数据封装起来,然后发送到服务端;(3)服务器接收到客户端发送来的数据后,解析数据得到实验命令、操作动作以及XML 变动数据;根据解析出的实验命令,并判断是否为智能指导命令;如果是智能指导命令,转入步骤;如果不是智能指导命令,则转入步骤(5);所述智能指导是指根据用户搭建的实验场景智能地给出用户帮助信息,指导用户完成实验任务;(4)根据增量数据和缓存的XML数据生成新的XML数据,更新缓存、磁盘文件以及相应的索引,并进行智能指导服务,转入步骤(7);(5)判断实验命令是否为回退场景命令,如果是,则根据回退次数和索引信息找到对应的虚拟实验场景XML文件,转入步骤(7);如果不是,则跳转到步骤(6);所述回退场景是指将实验场景回退到若干次之前的状态;(6)对于虚拟实验的其它命令,则从缓存中获取XML数据,并发送至相应的应用服务器;(7)将服务端得到的处理结果发送至客户端。
2.根据权利要求1所述的XML增量传输与交互方法,其特征在于,步骤(1)包括下述过程(1. 1)服务端将XML数据缓存,然后从连接哈希表中获取连接值,根据连接值查询缓存索引,判断是否存在此连接值的索引,如果不存在,则新添加一条新索引记录,即建立缓存索引;如果存在,则更新缓存索引;(1. 2)服务端首先通过连接值查询文件索引,判断是否存在该连接值的文件索引,如果不存在,则转入步骤(1.3);如果存在,则转入步骤(1.4);(1.3)将XML数据写入磁盘,并根据连接值建立文件索引;(1. 4)判断是否已经存在设置的最大条数索引记录,如果存在,则删除文件名称数值最小的那个XML文件;然后将缓存的XML数据写入磁盘,并根据最大文件名称数值加一命名文件名,然后更新文件索引。
3.根据权利要求1所述的XML增量传输与交互方法,其特征在于,步骤(4)包括下述过程(4. 1)服务端根据操作动作与新增数据,合成一个新的XML场景;(4. 2)服务端缓存新生成的XML场景,并回收前一次的缓存空间,然后更新缓存索引;(4. 3)将缓存的XML数据写入磁盘,并更新文件索引;(4. 4)服务端进行智能指导服务,得到智能指导结果。
4.根据权利要求1所述的XML增量传输与交互方法,其特征在于,步骤( 包括下述过程(5. 1)解析实验命令得到回退数,文件索引最大值减去回退次数并加一得到XML文件名;(5.2)查询文件索引信息,判断是否存在此文件名,如果存在,转入步骤(5.3);如果不存在,转入步骤(5.4);(5. 3)根据索引信息找到对应的虚拟实验场景XML文件; (5. 4)给出回退失败提示信息。
5.根据权利要求3所述的XML增量传输与交互方法,其特征在于,步骤(4. 3)包括下述过程(4. 3. 1)服务端判断此连接值的文件索引中是否已经存在最大条数的索引信息,如果存在,转入步骤(4. 3. 2);如果不存在,转入步骤(4. 3. 3);(4. 3. 2)删除最早写入磁盘的XML文件,并更新文件索引;(4. 3. 3)将缓存的XML数据写入磁盘,并根据最大文件名称数值加一命名文件名,然后更新文件索引。
全文摘要
本发明公开了一种面向多学科虚拟实验平台的XML增量传输与交互方法,属于计算机应用领域。初始化时,服务端将初始场景XML数据缓存和写入磁盘,并建立缓存和文件索引。客户端检测用户的实验操作动作,并将实验命令以及增量的数据封装起来,发送到服务端。解析实验命令,如果是智能指导命令,根据增量数据和缓存的XML数据生成新的XML数据,更新缓存、磁盘文件以及相应的索引,并进行智能指导服务,如果是回退场景命令,根据回退次数和索引信息找到对应的虚拟实验场景XML文件,如果是其它命令,则从缓存中获取XML数据,并发送至相应的应用服务器。否则将服务端得到的处理结果发送至客户端。本发明可以减少虚拟实验交互过程中的数据传输量,保证整个实验过程的实时性。
文档编号G06F17/30GK102231164SQ20111018889
公开日2011年11月2日 申请日期2011年7月6日 优先权日2011年7月6日
发明者刘超, 张磊, 王曙光, 童围, 董浩, 蒋文斌, 金海 , 马潇 申请人:华中科技大学