远程实验分时管理平台的设计与实现

2018-03-31 12:22李丹美陆晓珏江浩张雄
电脑知识与技术 2018年6期

李丹美 陆晓珏 江浩 张雄

摘要:由于高端仪器数量少,为了能使更多的学生使用高端测量仪器,研发了远程实验分时管理平台。此平台实现实验设备在线预约、远程控制、分时管理等功能,使学生有机会动手使用高端测量设备。该文阐述了远程实验管理平台的特点、系统的架构和功能,介绍了实验系统的技术实现,给出了实验系统的应用模式。

关键词:远程实验平台;高端仪器;分时管理

中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2018)06-0018-04

大学实验室中,一般的实验课上实验设备比较大众化,量多,可以满足许多学生同时完成实验的要求,学生可以现场进行实际操作。但是有些高端测量仪器价格贵,数量少,无法满足实验时每组一台的要求。这些高端仪器操作相对复杂,维护成本高,因此学生在实验中较少使用。为了提高大学生的实验动手能力,熟悉高端仪器的使用,我们以电磁场与电磁波实验课程为例,建立了远程实验平台。实验测量现场搭建好后,学生可以在终端的浏览器上通过网络访问物理位置位于远程的实验室,并且完成远程实验。由于高端测量仪器的数量有限,考虑到众多学生的实验需求,我们探索出了一套基于域身份认证的分时管理平台,利用Web技术,数据库技术,Windows域管理技术等等,设计并且实现了平台的分时管理功能,为远程实验仪器的控制和管理方面打开新的思路。

1平台的总体设计

远程实验平台指在校园网环境下,通过网络访问物理位置位于远程实验室,根据域认证的身份进入平台,并且通过相关的应用程序来实现对实验设备的远程访问,完成远程实验的测量并提交实验报告。远程实验平台克服了传统教学实验室的弊端,并且在控制学科领域有较为广泛的应用,对其他学科实验教学有重要的参考价值。

1.1系统结构

现阶段,大多数网站开发采用的是B/S架构进行开发,相比于C/S架构,B/S架构不受限于局域网的特定环境,操作系统和浏览器的兼容性也比较强,因此本平台采用B/S三层架构来搭建平台的基本框架。由于实验仪器的物理位置和相应功能不同,本平台分成用户端,服务器端和设备控制端,用户端通过网络和服务器端进行数据的交互,而服务器端利用局域网来实现对硬件资源的控制,系统的结构如图1所示。

用户端是由不同权限的用户构成,根据权限的大小依次分为管理员用户,教师用户和学生用户,这些用户使用电脑或者移动设备来访问远程实验平台,经过身份认证后才能完成在线浏览,时间预约,远程实验等等一系列的功能。教师用户拥有对应课程的管理权限,管理员用户需要对整个平台进行管理,用户端是通过浏览器来访问平台,完成相应地数据请求和信息交换。

数据库端是由数据库服务器、DNS服务器、Web服务器、视频服务器和身份认证服务器构成,在数据库层主要负责对用户身份的认证,响应用户的数据请求,对实验设备下发命令,完成用户与平台之间的请求交互,硬件资源的合理调度,实验视频数据的处理和监控等功能。

设备控制端包括防火墙,实验仪器,网络设备资源等,本平台的实验仪器采用的是ZVL矢量网络分析仪,网络设备资源是由交换机、路由器、摄像头等硬件构成,在设备控制层主要实现对设备资源的调度,执行服务器端的命令请求,对实验过程进行实时监控,并且采集相应地实验数据等操作,根据不同的实验仪器,需要进行相应端口等资源的配置以完成对设备的控制。

1.2功能模块划分

根据远程实验具体实验需求,整个平台被划分为以下功能模块,前台是由个人管理中心、用户身份认证、实验设备操作、实验在线预约模块构成,后台是由用户信息管理模块、实验报告管理、实验设备管理模块构成,因此整个平台的模块划分图,如图2所示。

2核心功能模块设计

远程实验平台的核心模块是用户身份认证模块、实验在线预约模块、实验设备管理模块这三大模块,用户身份认证模块实现对登录平台的身份进行安全验证,实验在线预约模块实现对设备资源的合理分配,实验设备管理模块保障实验按预约时间有序地完成,这三大功能模块确保平台的分时管理功能的最终实现。

2.1用户身份认证模块

2.1.1设计思路

用户身份认证模块建立用户层与服务器层之间的访问机制,校园内的用户登录实验平台时,需要经过身份的验证过程,而用户访问硬件设备资源时同样需要进行身份验证,我们这里将CAS单点登录系统和Windows域身份认证整合,从而统一地管理需要访问平台和硬件設备的用户。其主要流程是,在校园网内创建一个根域,将需要访问平台的PC或者移动设备加入该域,并添加相应用户的账号和密码,至此,完成域身份的配置过程。域终端用户访问设备或者Portal时,无需再进行身份认证,非域终端进行访问时,会自动弹出Windows域身份的认证框,认证失败后,即没有权限访问对应的设备资源。基于域的单点登录框架图,如图3所示。

将CAS单点登录系统和Windows AD域身份认证整合,Windows AD域负责身份认证,CAS负责单点登录,而实现的媒介是Portal,起到链接认证和AD域整合的作用。域终端访问资源或者Portal,无需再进行身份认证,身份认证后将单点登录交给我们模拟CAS认证的服务中心DTSSO进行单点登录,单点登录主要是申请票据和兑换票据的过程,访问资源时需要去服务中心申请票据,服务中心把票据颁发给信任的用户,用户凭借票据访问资源,完成相应地身份验证。

2.1.2身份验证模块的设计与实现

CAS私有域票据是作为域终端用户实现单点登录的核心组成,主要负责域用户的身份验证。票据的字段包括ID,use-rADnameID,expireTime,exchangeTimes,ticketGenerateTime等基本信息,其中,ID字段是区分票据的唯一标识,userADnameID字段是区分域用户身份的唯一标识,并且票据具有时效性,一般系统设置的有效时长为30秒,这里用ticketGenerateTime来记录票据的生成时间,exchangeTimes是记录兑换票据的次数,因此.票据的这些基本信息,如表1所示。

2.2实验在线预约模块

2.2.1设计思路

实验在线预约模块是指登录平台的用户,经过身份认证后,实现对硬件设备的分时段资源管理的功能。其核心思想是,用户在进行远程实验操作前,需要对使用设备,使用时间进行预约,即用户首先在PC端进行统一身份认证后,在浏览器栏输入实验平台的IP地址,登录到平台的预约界面并且查询设备的使用情况,根据当前预约的具体情况,选择设备的预约时间,防止出现设备资源占用导致无法预约的情况。用户进行预约的内容包括实验指导教师,实验类型,实验课题,实验时段,点击“预约”按钮,提交请求,如果返回“预约成功”的提示,则表示预约成功,用户在预约时段内登录平台进行远程实验的操作,如果返回“预约失败”的提示,则需要进行重新预约。在线预约的基本流程,如图4所示。

2.2.2后台数据库的构建

为保证在线预约功能的顺利实现,针对用户信息、预约时段、预约设备等数据我们需要构建相应地数据库进行管理,有利于后台数据的查询,判断和调用。平台采用的是MySQL数据库系统进行数据的管理,新建数据库NewRecord,数据表Reser-ration,如表2所示。Reservation表列:id字段记录数据表自动生成的编号,user_num字段记录预约用户的学号,user_content记录预约的实验内容,user_device记录预约的硬件设备,us-er_time1表示预约的起始时间,user_time2表示预约的结束时间,根据两者的时间差来判断预约时长。

2.2.3在线预约信息存储的设计与实现

用户在平台预约信息需要存储到后台的数据库中,基本的流程是,将预约的数据定义成data类,利用DoInsert(插入数据)函数把预约的相关数据插入到Reservation的数据表中,主要代码如下:

首先,我们自定义data类,接着在类中定义字符串connstring连接本地的数据库,获取预约的数据,在Do_Insert()函数中新建连接数据库的对象order,然后执行Sqlcommand对象的实际用例,代码执行一次完毕后,利用ExecuteNonQuery()函数更新数据库记录,把下一个记录写入到Reservation数据表中,依次类推,完成所有数据的传输和存储。

2.3实验设备管理模块的设计

2.3.1设计思路

采用的是用户在远程实验平台上提交预约申请,域控进行预约设备管理,在规定的时间开放实验设备的使用权限,保证同时段单个用户登录实验仪器进行实验,避免出现实验中用户掉线的情况。用户进行遠程实验的基本框架,如图5所示:

(1)在线预约

学生需要通过远程实验平台进行个人信息的注册,具体需要注册以下的信息:账号,密码,姓名,学号,班级,个人邮箱,电话号码,注册成功后,个人信息将记录在后台的数据库之中。注册成功后,学生需在平台首页的VR-实验室-远程实验-预约远程实验中进行实验预约,预约申请表中需要填写任课教师,实验类型,实验名称,实验时间以及申请理由,预约成功后将在学生端的实验预约界面进行反馈。

(2)判断冲突

学生端提交预约申请表后,所有用户申请的数据将保存在Web管理页面中,管理界面需要处理所有用户的申请,判断是否存在实验时间的冲突,进行冲突检测,保证同时段只有一个用户可以进行远程实验。

(3)预约下发域控

管理界面进行冲突检测后,将预约的账户,密码,预约时间等信息形成一条命令,在域控制器中生成一条某用户预约信息的策略,包括指定设备,用户,预约时间等。所有的域控主机通过该策略来限制用户的登录。

(4)远程登录设备

学生的预约申请成功后,在指定时间内,登录域中的实验仪器设备通过远程桌面连接,进行实验,实验结束后数据将保存在设备中。

2.3.2预约冲突检测的设计与实现

预约冲突检测模块是实验设备管理模块最核心的功能,为保证远程实验预约机制的顺利进行,需要对设备资源的使用情况进行查询,所以,需要检测后台预约的记录并判断冲突。本平台是利用多层的嵌套结构来进行逻辑判断,判断和检测的过程,如图6所示。

在线预约功能实现主要的难点在于预约时间段的选择,满足以下规则:

第一,每天的二十二点至五点是实验室资源最为空闲的时段,再考虑到服务器需要日常的更新与维护,实验室每天的开放时间为早上八点,关闭时间为下午五点,用户需要在此时间段进行在线预约;

第二,用户需要填写正确的预约时间,即选择实验时间的格式必须正确。预约的时间保证在同一天进行,并且结束时间需在开始时间之后,否则无法提交预约信息;

第三,由于资源的数量有限,用户的需求较多,每人每天最多只能预约一次远程实验。

用户预约时间采用datetimepicker控件来实现,结合网页制作的iquery技术、实时日历控件、slider控件,我们每天预约时间按照小时,分钟和秒钟来定义,小时所需的滑动格数是24,分钟所需的滑动格数是60,秒钟所需的滑动格数也是60,我们这边定义秒钟的概念,但是禁用秒钟的滑动格。当我们选择相应的格数,就可以进行相应的日期和时间的选择。在页面头部header部分,定义整个页面的功能和设计的样式,利用textbox控件,定义该控件对应的初始时间ID为timel和结束时间ID为time2,主要代码如下所示:

用户在前端预约界面,填写好预约信息后,点击“提交”按钮,通过daetimepicker控件发送数据请求。预约起止时间timel,time2必须是datatime类型,因此需要预约时间的格式进行判断,主要代码如下:

根据这段代码,我们知道database类有两种函数可以判断预约时间的唯一性,分别是iexist()函数和iexists()函数,database.iexist()函数判断是否预约时间为同一天,database.isexists()函数判断预约的日期是否存在重复的情况。

对于iexist()函数的方法,我们首先连接对象,然后为字符串赋值,接着打开对应的数据连接,执行数据库语句,目的是读取用户的数据,并判断当天是否存在预约记录,最后关闭之前的数据库。用户的学号用参数c表示,用户预约的时间用参数d表示,具体的程序是,获取用户的预约时间后,通过Session变量得到用户的学号,利用SQL语句查询NewRecord数据库中Reservation表的stime字段,来判断用户当天是否有预约实验的记录,主要代码代码如下:

rs.Close();

return false;

3结论

分时管理平台解决了实验装置的可利用数量少与所需实验的用户数量多的矛盾,让实验不再受限于时间和地域等客观条件。该实验平台具有安全访问,分时管理的特点,目前实验平台已完成基本的测试,运营情况正常,后期对平台的功能不断进行改进和拓展,并且将之真正地投入到学校远程实验的建设中去。