论文部分内容阅读
[摘要]目前,无纸化考试系统正越来越多成为一种普遍采用的考试手段,是对卷面传统考试的一种改革,由于考试品种的多样性,现阶段对于无纸化考试基本上都采用客户端/服务器模式,即我们普遍所说的C/S系统。以Delphi6.0作为开发C/S系统的开发工具为例,重点研究网络无纸化考试系统的开发思路。
[关键词]C/S系统 Socket组件 套接字 Delphi
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0220052-02
一、引言
网络无纸化考试系统作为一种新颖的考试手段出现在上世纪九十年代,是对传统卷面考试形式的重大改革,是为了克服传统考试形式所带来的一系列问题应运而生的,无纸化考试对于传统考试形式具有几大优势:
1.减少资源浪费尤其是大量考试用纸张和印刷的浪费,实现“绿色”考试的理念。
2.极大地降低了考试成本,尤其是考务人员的工作量可以大大降低。
3.提高了考试的公平性和公正性,由于题库加密的因素,可以最大限度地保证考题的安全性。
4.突破了地域限制,能最大限度地利用网络的优势实施异地考试。
由于考试的特殊性,在多方面都有比较严格的要求,而根据地域的差异性,在组织考试的时候要充分考虑到影响考试正常进行的因素,例如题库的保密、网络线路的可靠与否等等,所以开发无纸化网络考试系统一般是在基于安全连接的TCP/IP协议上进行,而且,题库必须进行加密以确保考试的公平性。
二、开发网络考试系统的基本思路
(一)网络考试系统开发中主要采用的网络协议组件
无纸化网络考试系统的开发是一个系统工程,根据考试的特殊性,我们通常要从考试的保密性、考试的客观性和考试的数据安全性方面考虑,归纳起来有如下几个问题:考试系统的题库组织工作,考试系统采用的网络安全保障,以及服务器、考试管理机、客户端的兼容性运行以及考试故障的数据恢复。
在Windows中广泛采用TCP套接字作为连接的主要接口,TCP/IP协议的套接字接口有三种可选类型:流式套接字、数据报套接字和原始套接字,由于数据报套接字属于无连接服务,是不可靠的链接协议,而原始套接字只用于新网络协议的测试,因此,我们在考试系统中选用流式套接字作为网络协议基础。
在Delphi开发系统中,TclientSocket是客户端Socket套接字组件,它负责实现客户端的协议基础,我们使用它作为考试客户端的主要组件,这个组件专门负责客户端与服务器之间的通讯,主要实现的功能是与服务器保持连接,收发题库和考生的答题,它的几个重要属性是:
1.Address属性
字符串型,它指明了要连接的服务器的IP地址。
2.Host属性
字符串型,它指明了要连接的服务器的主机名,不过它的优先级比Address高,如果同时指定了Address和Host属性,则Address将被忽略,当然,在开发考试系统时,我们通常只指定Address属性。
3.Port属性
整数类型,指定服务器的服务端口,一般避免使用系统默认端口0~1023,我们这里使用6000端口。
4.ClientType属性
枚举类型,本属性对组件影响较大,它指定客户端的Socket读写信息的方式。我们设定为ctNoBlocking。
TserverSocket组件是服务器套接字组件,用于考试管理机服务端,它和TclientSocket组件的许多属性相似,不同的属性中比较重要的是TserverType,该属性也是一个枚举类型,它包括stNonBlocking和stThreadBlocking两个值,stThreadBlocking表示采用阻塞方式进行连接,在这种情况下,服务器会为每一个阻塞方式的链接自动分配一个新的执行线程,这样,即使某个客户端程序正在进行读写操作,其他客户端也不必等待。在考试系统的开发中,TserverSocket应该采用stThreadBlocki
ng方式进行。
(二)网络考试系统开发的基本结构的有关思路
根据网络考试系统开发的要求,网络考试系统由考试服务器端、考试管理机端、考试客户机端、考试后台支持系统等软件组成。当然,根据考试的类型,还可由其他部分组成,如某些考试需要计算机模拟一些软件的运行环境,则另需一些模拟运行环境软件,本文仅讨论一般情况下,网络考试系统的组成框架,并不涉及某些专门考试类型,而且,考虑到目前的计算机的功能情况,本文将考试服务器端与考试管理机端合并在一起进行考虑。
1.服务器与考试管理机端的设计思路
服务器与考试管理机端在考试中承担了数据核心中转、考试管理的重要任务,所以,在整个考试系统中占有核心地位,目前在普遍使用的网络C/S考试系统中大都采用瘦客户端方式,也就是说,客户端仅担任考生考试平台的作用,主要的工作是由服务器和考试管理机来完成的。因此,服务器与考试管理机端软件的开发占有很重要的地位。
仔细分析网络考试系统,可以考虑服务器与考试管理机端所承担的任务有:题库的管理与加载、考生库的管理与加载、考生的考试登录、考试异常情况处理、考试数据处理等等。因此,服务器与考试管理机端的软件框架如图:
(1)题库管理模块
负责对考试所涉及的题库的组织、加密和发送等工作,其中题库我们采用数据库的形式进行封装,根据不同的考试可以分为客观题和主观题两种,而在题目的编排上设计到题面和选项的组织,根据考试的规模,数据库可以采用SQL或Access,在Delphi中,基本上可以采用三种数据库引擎,即:ODBC引擎、ADO引擎以及Delphi自带的BDE引擎,考虑到兼容性和易用性等方面的要求,首选采用基于OLE技术的ADO引擎技术。使用Delphi自带的ADO数据库组件即可轻松实现上述数据库连接。主要使用TADOConnection和TADOQuery组件。TADOConnection负责数据库的连接,只需对其连接字符串正确设置即可完成连接,TADOQuery组件负责具体操作数据库,使用通用的SQL语言。
(2)考生管理模块
负责考生信息的登录、校验的工作,也是采用数据库方式进行管理,可以单独存放于考生数据库库中,对于小型的考试,也可与成绩库一起打包。
(3)考试异常情况处理模块
负责随时考生考试情况,客户端网络故障处理以及考生因机器问题的处理解决办法(移机考试或重新登录),它需要在整个考试过程中监视每一个客户端的情况,一发现客户端异常就要出现警告信息,以便于考务人员及时作出调整。
(4)考试成绩处理与数据处理模块
这是网络考试中的最后一道环节,它负责处理考生的考试成绩的加密与打包,考生考试中间数据的备份和上传。
2.考试客户机的设计思想
客户端承担着考生的考试平台,在与服务器的数据交换方面采用的组件主要也是TclientSocket组件,其监听端口与服务器设置一致,其工作方式采用ctBlocking模式,为可靠地进行与服务器的数据交换,客户端采用TwinSocketStream流方式进行读写。
客户端的主要任务是建立一个友好的人机交互界面,由于采用瘦客户模式,因此,在一般的考试系统中,并不考虑在客户端设计考试评分环节,而是统一在服务器端进行评分。
3.考试服务器、考试客户机数据通信协议的设计
在Delphi中,即使TclientSocket和TserverSocket能够相互协调工作,但考虑到考试的特殊性,本考试系统在考试服务器和考试客户机之间仍应该设计一个完整的数据交换协议,以便于最大限度地减少考试数据的错误传递。所以,必须建立一个所谓的“令牌”规则,在服务器(或客户机)向客户机(或服务器)发送第n条数据流后,不应该马上发送第n+1条,而是在收到对方的“请求下一传送”的“令牌”后才能继续传送数据,根据这个思想,我们实际上在TclientSocket和TserverSocket的基础上开发了一个数据传送中间件供整个系统使用。
三、考试系统开发中几个重要技术
(一)组件开发技术
在Delphi中,开发组件使用三种方法:继承、聚合和子类化,但是,不管什么方法,开发VCL组件都必须合理选择和使用好父类,因为中间件的属性和方法往往是继承自父类,使用轻捷的父类能有效提高开发效率,例如本文所提及的考试服务器和考试客户机之间的数据交换协议,我们就是分别继承自TclientSocket和TserverSocket。
(二)挂钩技术的合理使用
挂钩技术即我们俗称的“Hook”技术,Hook技术功能强大,它能成功地屏蔽系统事件,在考试系统的开发中,应该考虑到考生在考试中的各种操作习惯,甚至某些作弊手段,例如,为了防止考生有意无意地结束考试进程而导致考试无法进行,可建立键盘挂钩,监视Ctrl+Alt+Del键的情况,屏蔽任务管理器。
(三)数据加密技术
考试数据的加密无疑是考试安全的保障,对考试数据的加密是保证考试公平的有效手段,本文采用内存压缩流的方法就是针对数据加密而提出的解决方法,对于数据库的加密,也可考虑对关键数据实行高强度MD5加密方法进行。
总之,无纸化考试系统将越来越多地使用在各种考试形式中,它对考试的更加公平、更加公正无疑起着重要的推动作用。
参考文献:
[1]罗小平,《Delphi精要》,电子工业出版社,2004年1月出版.
[2]静海,《深入Delphi网络编程》,2001年10月出版.
[3]朱蓉、张鼎,《基于Java Socket技术的网络考试模拟系统的开发》,《嘉兴学院学报》,2005.第17卷,第06期.
[4]刘畅,《Socket技术在小型C/S应用程序加密中的应用》,《科技咨询导报》2007.第24期.
[5]沈祥鸿、范云芝,《Delphi6.0与VB6.0中的Socket技术对比分析及集成》,《信阳农业高等专科学校学报》,2005.第15卷,第03期.
作者简介:
陈晓舟,江苏无锡人,江南大学工程硕士,无锡市广播电视大学讲师;林意,江苏无锡人,江南大学教授。
[关键词]C/S系统 Socket组件 套接字 Delphi
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0220052-02
一、引言
网络无纸化考试系统作为一种新颖的考试手段出现在上世纪九十年代,是对传统卷面考试形式的重大改革,是为了克服传统考试形式所带来的一系列问题应运而生的,无纸化考试对于传统考试形式具有几大优势:
1.减少资源浪费尤其是大量考试用纸张和印刷的浪费,实现“绿色”考试的理念。
2.极大地降低了考试成本,尤其是考务人员的工作量可以大大降低。
3.提高了考试的公平性和公正性,由于题库加密的因素,可以最大限度地保证考题的安全性。
4.突破了地域限制,能最大限度地利用网络的优势实施异地考试。
由于考试的特殊性,在多方面都有比较严格的要求,而根据地域的差异性,在组织考试的时候要充分考虑到影响考试正常进行的因素,例如题库的保密、网络线路的可靠与否等等,所以开发无纸化网络考试系统一般是在基于安全连接的TCP/IP协议上进行,而且,题库必须进行加密以确保考试的公平性。
二、开发网络考试系统的基本思路
(一)网络考试系统开发中主要采用的网络协议组件
无纸化网络考试系统的开发是一个系统工程,根据考试的特殊性,我们通常要从考试的保密性、考试的客观性和考试的数据安全性方面考虑,归纳起来有如下几个问题:考试系统的题库组织工作,考试系统采用的网络安全保障,以及服务器、考试管理机、客户端的兼容性运行以及考试故障的数据恢复。
在Windows中广泛采用TCP套接字作为连接的主要接口,TCP/IP协议的套接字接口有三种可选类型:流式套接字、数据报套接字和原始套接字,由于数据报套接字属于无连接服务,是不可靠的链接协议,而原始套接字只用于新网络协议的测试,因此,我们在考试系统中选用流式套接字作为网络协议基础。
在Delphi开发系统中,TclientSocket是客户端Socket套接字组件,它负责实现客户端的协议基础,我们使用它作为考试客户端的主要组件,这个组件专门负责客户端与服务器之间的通讯,主要实现的功能是与服务器保持连接,收发题库和考生的答题,它的几个重要属性是:
1.Address属性
字符串型,它指明了要连接的服务器的IP地址。
2.Host属性
字符串型,它指明了要连接的服务器的主机名,不过它的优先级比Address高,如果同时指定了Address和Host属性,则Address将被忽略,当然,在开发考试系统时,我们通常只指定Address属性。
3.Port属性
整数类型,指定服务器的服务端口,一般避免使用系统默认端口0~1023,我们这里使用6000端口。
4.ClientType属性
枚举类型,本属性对组件影响较大,它指定客户端的Socket读写信息的方式。我们设定为ctNoBlocking。
TserverSocket组件是服务器套接字组件,用于考试管理机服务端,它和TclientSocket组件的许多属性相似,不同的属性中比较重要的是TserverType,该属性也是一个枚举类型,它包括stNonBlocking和stThreadBlocking两个值,stThreadBlocking表示采用阻塞方式进行连接,在这种情况下,服务器会为每一个阻塞方式的链接自动分配一个新的执行线程,这样,即使某个客户端程序正在进行读写操作,其他客户端也不必等待。在考试系统的开发中,TserverSocket应该采用stThreadBlocki
ng方式进行。
(二)网络考试系统开发的基本结构的有关思路
根据网络考试系统开发的要求,网络考试系统由考试服务器端、考试管理机端、考试客户机端、考试后台支持系统等软件组成。当然,根据考试的类型,还可由其他部分组成,如某些考试需要计算机模拟一些软件的运行环境,则另需一些模拟运行环境软件,本文仅讨论一般情况下,网络考试系统的组成框架,并不涉及某些专门考试类型,而且,考虑到目前的计算机的功能情况,本文将考试服务器端与考试管理机端合并在一起进行考虑。
1.服务器与考试管理机端的设计思路
服务器与考试管理机端在考试中承担了数据核心中转、考试管理的重要任务,所以,在整个考试系统中占有核心地位,目前在普遍使用的网络C/S考试系统中大都采用瘦客户端方式,也就是说,客户端仅担任考生考试平台的作用,主要的工作是由服务器和考试管理机来完成的。因此,服务器与考试管理机端软件的开发占有很重要的地位。
仔细分析网络考试系统,可以考虑服务器与考试管理机端所承担的任务有:题库的管理与加载、考生库的管理与加载、考生的考试登录、考试异常情况处理、考试数据处理等等。因此,服务器与考试管理机端的软件框架如图:
(1)题库管理模块
负责对考试所涉及的题库的组织、加密和发送等工作,其中题库我们采用数据库的形式进行封装,根据不同的考试可以分为客观题和主观题两种,而在题目的编排上设计到题面和选项的组织,根据考试的规模,数据库可以采用SQL或Access,在Delphi中,基本上可以采用三种数据库引擎,即:ODBC引擎、ADO引擎以及Delphi自带的BDE引擎,考虑到兼容性和易用性等方面的要求,首选采用基于OLE技术的ADO引擎技术。使用Delphi自带的ADO数据库组件即可轻松实现上述数据库连接。主要使用TADOConnection和TADOQuery组件。TADOConnection负责数据库的连接,只需对其连接字符串正确设置即可完成连接,TADOQuery组件负责具体操作数据库,使用通用的SQL语言。
(2)考生管理模块
负责考生信息的登录、校验的工作,也是采用数据库方式进行管理,可以单独存放于考生数据库库中,对于小型的考试,也可与成绩库一起打包。
(3)考试异常情况处理模块
负责随时考生考试情况,客户端网络故障处理以及考生因机器问题的处理解决办法(移机考试或重新登录),它需要在整个考试过程中监视每一个客户端的情况,一发现客户端异常就要出现警告信息,以便于考务人员及时作出调整。
(4)考试成绩处理与数据处理模块
这是网络考试中的最后一道环节,它负责处理考生的考试成绩的加密与打包,考生考试中间数据的备份和上传。
2.考试客户机的设计思想
客户端承担着考生的考试平台,在与服务器的数据交换方面采用的组件主要也是TclientSocket组件,其监听端口与服务器设置一致,其工作方式采用ctBlocking模式,为可靠地进行与服务器的数据交换,客户端采用TwinSocketStream流方式进行读写。
客户端的主要任务是建立一个友好的人机交互界面,由于采用瘦客户模式,因此,在一般的考试系统中,并不考虑在客户端设计考试评分环节,而是统一在服务器端进行评分。
3.考试服务器、考试客户机数据通信协议的设计
在Delphi中,即使TclientSocket和TserverSocket能够相互协调工作,但考虑到考试的特殊性,本考试系统在考试服务器和考试客户机之间仍应该设计一个完整的数据交换协议,以便于最大限度地减少考试数据的错误传递。所以,必须建立一个所谓的“令牌”规则,在服务器(或客户机)向客户机(或服务器)发送第n条数据流后,不应该马上发送第n+1条,而是在收到对方的“请求下一传送”的“令牌”后才能继续传送数据,根据这个思想,我们实际上在TclientSocket和TserverSocket的基础上开发了一个数据传送中间件供整个系统使用。
三、考试系统开发中几个重要技术
(一)组件开发技术
在Delphi中,开发组件使用三种方法:继承、聚合和子类化,但是,不管什么方法,开发VCL组件都必须合理选择和使用好父类,因为中间件的属性和方法往往是继承自父类,使用轻捷的父类能有效提高开发效率,例如本文所提及的考试服务器和考试客户机之间的数据交换协议,我们就是分别继承自TclientSocket和TserverSocket。
(二)挂钩技术的合理使用
挂钩技术即我们俗称的“Hook”技术,Hook技术功能强大,它能成功地屏蔽系统事件,在考试系统的开发中,应该考虑到考生在考试中的各种操作习惯,甚至某些作弊手段,例如,为了防止考生有意无意地结束考试进程而导致考试无法进行,可建立键盘挂钩,监视Ctrl+Alt+Del键的情况,屏蔽任务管理器。
(三)数据加密技术
考试数据的加密无疑是考试安全的保障,对考试数据的加密是保证考试公平的有效手段,本文采用内存压缩流的方法就是针对数据加密而提出的解决方法,对于数据库的加密,也可考虑对关键数据实行高强度MD5加密方法进行。
总之,无纸化考试系统将越来越多地使用在各种考试形式中,它对考试的更加公平、更加公正无疑起着重要的推动作用。
参考文献:
[1]罗小平,《Delphi精要》,电子工业出版社,2004年1月出版.
[2]静海,《深入Delphi网络编程》,2001年10月出版.
[3]朱蓉、张鼎,《基于Java Socket技术的网络考试模拟系统的开发》,《嘉兴学院学报》,2005.第17卷,第06期.
[4]刘畅,《Socket技术在小型C/S应用程序加密中的应用》,《科技咨询导报》2007.第24期.
[5]沈祥鸿、范云芝,《Delphi6.0与VB6.0中的Socket技术对比分析及集成》,《信阳农业高等专科学校学报》,2005.第15卷,第03期.
作者简介:
陈晓舟,江苏无锡人,江南大学工程硕士,无锡市广播电视大学讲师;林意,江苏无锡人,江南大学教授。