陳曉舟 林 意
[摘要]目前,無紙化考試系統(tǒng)正越來越多成為一種普遍采用的考試手段,是對卷面?zhèn)鹘y(tǒng)考試的一種改革,由于考試品種的多樣性,現(xiàn)階段對于無紙化考試基本上都采用客戶端/服務(wù)器模式,即我們普遍所說的C/S系統(tǒng)。以Delphi6.0作為開發(fā)C/S系統(tǒng)的開發(fā)工具為例,重點(diǎn)研究網(wǎng)絡(luò)無紙化考試系統(tǒng)的開發(fā)思路。
[關(guān)鍵詞]C/S系統(tǒng) Socket組件 套接字 Delphi
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)0220052-02
一、引言
網(wǎng)絡(luò)無紙化考試系統(tǒng)作為一種新穎的考試手段出現(xiàn)在上世紀(jì)九十年代,是對傳統(tǒng)卷面考試形式的重大改革,是為了克服傳統(tǒng)考試形式所帶來的一系列問題應(yīng)運(yùn)而生的,無紙化考試對于傳統(tǒng)考試形式具有幾大優(yōu)勢:
1.減少資源浪費(fèi)尤其是大量考試用紙張和印刷的浪費(fèi),實(shí)現(xiàn)“綠色”考試的理念。
2.極大地降低了考試成本,尤其是考務(wù)人員的工作量可以大大降低。
3.提高了考試的公平性和公正性,由于題庫加密的因素,可以最大限度地保證考題的安全性。
4.突破了地域限制,能最大限度地利用網(wǎng)絡(luò)的優(yōu)勢實(shí)施異地考試。
由于考試的特殊性,在多方面都有比較嚴(yán)格的要求,而根據(jù)地域的差異性,在組織考試的時(shí)候要充分考慮到影響考試正常進(jìn)行的因素,例如題庫的保密、網(wǎng)絡(luò)線路的可靠與否等等,所以開發(fā)無紙化網(wǎng)絡(luò)考試系統(tǒng)一般是在基于安全連接的TCP/IP協(xié)議上進(jìn)行,而且,題庫必須進(jìn)行加密以確??荚嚨墓叫浴?/p>
二、開發(fā)網(wǎng)絡(luò)考試系統(tǒng)的基本思路
(一)網(wǎng)絡(luò)考試系統(tǒng)開發(fā)中主要采用的網(wǎng)絡(luò)協(xié)議組件
無紙化網(wǎng)絡(luò)考試系統(tǒng)的開發(fā)是一個(gè)系統(tǒng)工程,根據(jù)考試的特殊性,我們通常要從考試的保密性、考試的客觀性和考試的數(shù)據(jù)安全性方面考慮,歸納起來有如下幾個(gè)問題:考試系統(tǒng)的題庫組織工作,考試系統(tǒng)采用的網(wǎng)絡(luò)安全保障,以及服務(wù)器、考試管理機(jī)、客戶端的兼容性運(yùn)行以及考試故障的數(shù)據(jù)恢復(fù)。
在Windows中廣泛采用TCP套接字作為連接的主要接口,TCP/IP協(xié)議的套接字接口有三種可選類型:流式套接字、數(shù)據(jù)報(bào)套接字和原始套接字,由于數(shù)據(jù)報(bào)套接字屬于無連接服務(wù),是不可靠的鏈接協(xié)議,而原始套接字只用于新網(wǎng)絡(luò)協(xié)議的測試,因此,我們在考試系統(tǒng)中選用流式套接字作為網(wǎng)絡(luò)協(xié)議基礎(chǔ)。
在Delphi開發(fā)系統(tǒng)中,TclientSocket是客戶端Socket套接字組件,它負(fù)責(zé)實(shí)現(xiàn)客戶端的協(xié)議基礎(chǔ),我們使用它作為考試客戶端的主要組件,這個(gè)組件專門負(fù)責(zé)客戶端與服務(wù)器之間的通訊,主要實(shí)現(xiàn)的功能是與服務(wù)器保持連接,收發(fā)題庫和考生的答題,它的幾個(gè)重要屬性是:
1.Address屬性
字符串型,它指明了要連接的服務(wù)器的IP地址。
2.Host屬性
字符串型,它指明了要連接的服務(wù)器的主機(jī)名,不過它的優(yōu)先級比Address高,如果同時(shí)指定了Address和Host屬性,則Address將被忽略,當(dāng)然,在開發(fā)考試系統(tǒng)時(shí),我們通常只指定Address屬性。
3.Port屬性
整數(shù)類型,指定服務(wù)器的服務(wù)端口,一般避免使用系統(tǒng)默認(rèn)端口0~1023,我們這里使用6000端口。
4.ClientType屬性
枚舉類型,本屬性對組件影響較大,它指定客戶端的Socket讀寫信息的方式。我們設(shè)定為ctNoBlocking。
TserverSocket組件是服務(wù)器套接字組件,用于考試管理機(jī)服務(wù)端,它和TclientSocket組件的許多屬性相似,不同的屬性中比較重要的是TserverType,該屬性也是一個(gè)枚舉類型,它包括stNonBlocking和stThreadBlocking兩個(gè)值,stThreadBlocking表示采用阻塞方式進(jìn)行連接,在這種情況下,服務(wù)器會為每一個(gè)阻塞方式的鏈接自動(dòng)分配一個(gè)新的執(zhí)行線程,這樣,即使某個(gè)客戶端程序正在進(jìn)行讀寫操作,其他客戶端也不必等待。在考試系統(tǒng)的開發(fā)中,TserverSocket應(yīng)該采用stThreadBlocki
ng方式進(jìn)行。
(二)網(wǎng)絡(luò)考試系統(tǒng)開發(fā)的基本結(jié)構(gòu)的有關(guān)思路
根據(jù)網(wǎng)絡(luò)考試系統(tǒng)開發(fā)的要求,網(wǎng)絡(luò)考試系統(tǒng)由考試服務(wù)器端、考試管理機(jī)端、考試客戶機(jī)端、考試后臺支持系統(tǒng)等軟件組成。當(dāng)然,根據(jù)考試的類型,還可由其他部分組成,如某些考試需要計(jì)算機(jī)模擬一些軟件的運(yùn)行環(huán)境,則另需一些模擬運(yùn)行環(huán)境軟件,本文僅討論一般情況下,網(wǎng)絡(luò)考試系統(tǒng)的組成框架,并不涉及某些專門考試類型,而且,考慮到目前的計(jì)算機(jī)的功能情況,本文將考試服務(wù)器端與考試管理機(jī)端合并在一起進(jìn)行考慮。
1.服務(wù)器與考試管理機(jī)端的設(shè)計(jì)思路
服務(wù)器與考試管理機(jī)端在考試中承擔(dān)了數(shù)據(jù)核心中轉(zhuǎn)、考試管理的重要任務(wù),所以,在整個(gè)考試系統(tǒng)中占有核心地位,目前在普遍使用的網(wǎng)絡(luò)C/S考試系統(tǒng)中大都采用瘦客戶端方式,也就是說,客戶端僅擔(dān)任考生考試平臺的作用,主要的工作是由服務(wù)器和考試管理機(jī)來完成的。因此,服務(wù)器與考試管理機(jī)端軟件的開發(fā)占有很重要的地位。
仔細(xì)分析網(wǎng)絡(luò)考試系統(tǒng),可以考慮服務(wù)器與考試管理機(jī)端所承擔(dān)的任務(wù)有:題庫的管理與加載、考生庫的管理與加載、考生的考試登錄、考試異常情況處理、考試數(shù)據(jù)處理等等。因此,服務(wù)器與考試管理機(jī)端的軟件框架如圖:
(1)題庫管理模塊
負(fù)責(zé)對考試所涉及的題庫的組織、加密和發(fā)送等工作,其中題庫我們采用數(shù)據(jù)庫的形式進(jìn)行封裝,根據(jù)不同的考試可以分為客觀題和主觀題兩種,而在題目的編排上設(shè)計(jì)到題面和選項(xiàng)的組織,根據(jù)考試的規(guī)模,數(shù)據(jù)庫可以采用SQL或Access,在Delphi中,基本上可以采用三種數(shù)據(jù)庫引擎,即:ODBC引擎、ADO引擎以及Delphi自帶的BDE引擎,考慮到兼容性和易用性等方面的要求,首選采用基于OLE技術(shù)的ADO引擎技術(shù)。使用Delphi自帶的ADO數(shù)據(jù)庫組件即可輕松實(shí)現(xiàn)上述數(shù)據(jù)庫連接。主要使用TADOConnection和TADOQuery組件。TADOConnection負(fù)責(zé)數(shù)據(jù)庫的連接,只需對其連接字符串正確設(shè)置即可完成連接,TADOQuery組件負(fù)責(zé)具體操作數(shù)據(jù)庫,使用通用的SQL語言。
(2)考生管理模塊
負(fù)責(zé)考生信息的登錄、校驗(yàn)的工作,也是采用數(shù)據(jù)庫方式進(jìn)行管理,可以單獨(dú)存放于考生數(shù)據(jù)庫庫中,對于小型的考試,也可與成績庫一起打包。
(3)考試異常情況處理模塊
負(fù)責(zé)隨時(shí)考生考試情況,客戶端網(wǎng)絡(luò)故障處理以及考生因機(jī)器問題的處理解決辦法(移機(jī)考試或重新登錄),它需要在整個(gè)考試過程中監(jiān)視每一個(gè)客戶端的情況,一發(fā)現(xiàn)客戶端異常就要出現(xiàn)警告信息,以便于考務(wù)人員及時(shí)作出調(diào)整。
(4)考試成績處理與數(shù)據(jù)處理模塊
這是網(wǎng)絡(luò)考試中的最后一道環(huán)節(jié),它負(fù)責(zé)處理考生的考試成績的加密與打包,考生考試中間數(shù)據(jù)的備份和上傳。
2.考試客戶機(jī)的設(shè)計(jì)思想
客戶端承擔(dān)著考生的考試平臺,在與服務(wù)器的數(shù)據(jù)交換方面采用的組件主要也是TclientSocket組件,其監(jiān)聽端口與服務(wù)器設(shè)置一致,其工作方式采用ctBlocking模式,為可靠地進(jìn)行與服務(wù)器的數(shù)據(jù)交換,客戶端采用TwinSocketStream流方式進(jìn)行讀寫。
客戶端的主要任務(wù)是建立一個(gè)友好的人機(jī)交互界面,由于采用瘦客戶模式,因此,在一般的考試系統(tǒng)中,并不考慮在客戶端設(shè)計(jì)考試評分環(huán)節(jié),而是統(tǒng)一在服務(wù)器端進(jìn)行評分。
3.考試服務(wù)器、考試客戶機(jī)數(shù)據(jù)通信協(xié)議的設(shè)計(jì)
在Delphi中,即使TclientSocket和TserverSocket能夠相互協(xié)調(diào)工作,但考慮到考試的特殊性,本考試系統(tǒng)在考試服務(wù)器和考試客戶機(jī)之間仍應(yīng)該設(shè)計(jì)一個(gè)完整的數(shù)據(jù)交換協(xié)議,以便于最大限度地減少考試數(shù)據(jù)的錯(cuò)誤傳遞。所以,必須建立一個(gè)所謂的“令牌”規(guī)則,在服務(wù)器(或客戶機(jī))向客戶機(jī)(或服務(wù)器)發(fā)送第n條數(shù)據(jù)流后,不應(yīng)該馬上發(fā)送第n+1條,而是在收到對方的“請求下一傳送”的“令牌”后才能繼續(xù)傳送數(shù)據(jù),根據(jù)這個(gè)思想,我們實(shí)際上在TclientSocket和TserverSocket的基礎(chǔ)上開發(fā)了一個(gè)數(shù)據(jù)傳送中間件供整個(gè)系統(tǒng)使用。
三、考試系統(tǒng)開發(fā)中幾個(gè)重要技術(shù)
(一)組件開發(fā)技術(shù)
在Delphi中,開發(fā)組件使用三種方法:繼承、聚合和子類化,但是,不管什么方法,開發(fā)VCL組件都必須合理選擇和使用好父類,因?yàn)橹虚g件的屬性和方法往往是繼承自父類,使用輕捷的父類能有效提高開發(fā)效率,例如本文所提及的考試服務(wù)器和考試客戶機(jī)之間的數(shù)據(jù)交換協(xié)議,我們就是分別繼承自TclientSocket和TserverSocket。
(二)掛鉤技術(shù)的合理使用
掛鉤技術(shù)即我們俗稱的“Hook”技術(shù),Hook技術(shù)功能強(qiáng)大,它能成功地屏蔽系統(tǒng)事件,在考試系統(tǒng)的開發(fā)中,應(yīng)該考慮到考生在考試中的各種操作習(xí)慣,甚至某些作弊手段,例如,為了防止考生有意無意地結(jié)束考試進(jìn)程而導(dǎo)致考試無法進(jìn)行,可建立鍵盤掛鉤,監(jiān)視Ctrl+Alt+Del鍵的情況,屏蔽任務(wù)管理器。
(三)數(shù)據(jù)加密技術(shù)
考試數(shù)據(jù)的加密無疑是考試安全的保障,對考試數(shù)據(jù)的加密是保證考試公平的有效手段,本文采用內(nèi)存壓縮流的方法就是針對數(shù)據(jù)加密而提出的解決方法,對于數(shù)據(jù)庫的加密,也可考慮對關(guān)鍵數(shù)據(jù)實(shí)行高強(qiáng)度MD5加密方法進(jìn)行。
總之,無紙化考試系統(tǒng)將越來越多地使用在各種考試形式中,它對考試的更加公平、更加公正無疑起著重要的推動(dòng)作用。
參考文獻(xiàn):
[1]羅小平,《Delphi精要》,電子工業(yè)出版社,2004年1月出版.
[2]靜海,《深入Delphi網(wǎng)絡(luò)編程》,2001年10月出版.
[3]朱蓉、張鼎,《基于Java Socket技術(shù)的網(wǎng)絡(luò)考試模擬系統(tǒng)的開發(fā)》,《嘉興學(xué)院學(xué)報(bào)》,2005.第17卷,第06期.
[4]劉暢,《Socket技術(shù)在小型C/S應(yīng)用程序加密中的應(yīng)用》,《科技咨詢導(dǎo)報(bào)》2007.第24期.
[5]沈祥鴻、范云芝,《Delphi6.0與VB6.0中的Socket技術(shù)對比分析及集成》,《信陽農(nóng)業(yè)高等專科學(xué)校學(xué)報(bào)》,2005.第15卷,第03期.
作者簡介:
陳曉舟,江蘇無錫人,江南大學(xué)工程碩士,無錫市廣播電視大學(xué)講師;林意,江蘇無錫人,江南大學(xué)教授。