陳曉舟 林 意
[摘要]目前,無紙化考試系統(tǒng)正越來越多成為一種普遍采用的考試手段,是對卷面?zhèn)鹘y(tǒng)考試的一種改革,由于考試品種的多樣性,現階段對于無紙化考試基本上都采用客戶端/服務器模式,即我們普遍所說的C/S系統(tǒng)。以Delphi6.0作為開發(fā)C/S系統(tǒng)的開發(fā)工具為例,重點研究網絡無紙化考試系統(tǒng)的開發(fā)思路。
[關鍵詞]C/S系統(tǒng) Socket組件 套接字 Delphi
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0220052-02
一、引言
網絡無紙化考試系統(tǒng)作為一種新穎的考試手段出現在上世紀九十年代,是對傳統(tǒng)卷面考試形式的重大改革,是為了克服傳統(tǒng)考試形式所帶來的一系列問題應運而生的,無紙化考試對于傳統(tǒng)考試形式具有幾大優(yōu)勢:
1.減少資源浪費尤其是大量考試用紙張和印刷的浪費,實現“綠色”考試的理念。
2.極大地降低了考試成本,尤其是考務人員的工作量可以大大降低。
3.提高了考試的公平性和公正性,由于題庫加密的因素,可以最大限度地保證考題的安全性。
4.突破了地域限制,能最大限度地利用網絡的優(yōu)勢實施異地考試。
由于考試的特殊性,在多方面都有比較嚴格的要求,而根據地域的差異性,在組織考試的時候要充分考慮到影響考試正常進行的因素,例如題庫的保密、網絡線路的可靠與否等等,所以開發(fā)無紙化網絡考試系統(tǒng)一般是在基于安全連接的TCP/IP協議上進行,而且,題庫必須進行加密以確保考試的公平性。
二、開發(fā)網絡考試系統(tǒng)的基本思路
(一)網絡考試系統(tǒng)開發(fā)中主要采用的網絡協議組件
無紙化網絡考試系統(tǒng)的開發(fā)是一個系統(tǒng)工程,根據考試的特殊性,我們通常要從考試的保密性、考試的客觀性和考試的數據安全性方面考慮,歸納起來有如下幾個問題:考試系統(tǒng)的題庫組織工作,考試系統(tǒng)采用的網絡安全保障,以及服務器、考試管理機、客戶端的兼容性運行以及考試故障的數據恢復。
在Windows中廣泛采用TCP套接字作為連接的主要接口,TCP/IP協議的套接字接口有三種可選類型:流式套接字、數據報套接字和原始套接字,由于數據報套接字屬于無連接服務,是不可靠的鏈接協議,而原始套接字只用于新網絡協議的測試,因此,我們在考試系統(tǒng)中選用流式套接字作為網絡協議基礎。
在Delphi開發(fā)系統(tǒng)中,TclientSocket是客戶端Socket套接字組件,它負責實現客戶端的協議基礎,我們使用它作為考試客戶端的主要組件,這個組件專門負責客戶端與服務器之間的通訊,主要實現的功能是與服務器保持連接,收發(fā)題庫和考生的答題,它的幾個重要屬性是:
1.Address屬性
字符串型,它指明了要連接的服務器的IP地址。
2.Host屬性
字符串型,它指明了要連接的服務器的主機名,不過它的優(yōu)先級比Address高,如果同時指定了Address和Host屬性,則Address將被忽略,當然,在開發(fā)考試系統(tǒng)時,我們通常只指定Address屬性。
3.Port屬性
整數類型,指定服務器的服務端口,一般避免使用系統(tǒng)默認端口0~1023,我們這里使用6000端口。
4.ClientType屬性
枚舉類型,本屬性對組件影響較大,它指定客戶端的Socket讀寫信息的方式。我們設定為ctNoBlocking。
TserverSocket組件是服務器套接字組件,用于考試管理機服務端,它和TclientSocket組件的許多屬性相似,不同的屬性中比較重要的是TserverType,該屬性也是一個枚舉類型,它包括stNonBlocking和stThreadBlocking兩個值,stThreadBlocking表示采用阻塞方式進行連接,在這種情況下,服務器會為每一個阻塞方式的鏈接自動分配一個新的執(zhí)行線程,這樣,即使某個客戶端程序正在進行讀寫操作,其他客戶端也不必等待。在考試系統(tǒng)的開發(fā)中,TserverSocket應該采用stThreadBlocki
ng方式進行。
(二)網絡考試系統(tǒng)開發(fā)的基本結構的有關思路
根據網絡考試系統(tǒng)開發(fā)的要求,網絡考試系統(tǒng)由考試服務器端、考試管理機端、考試客戶機端、考試后臺支持系統(tǒng)等軟件組成。當然,根據考試的類型,還可由其他部分組成,如某些考試需要計算機模擬一些軟件的運行環(huán)境,則另需一些模擬運行環(huán)境軟件,本文僅討論一般情況下,網絡考試系統(tǒng)的組成框架,并不涉及某些專門考試類型,而且,考慮到目前的計算機的功能情況,本文將考試服務器端與考試管理機端合并在一起進行考慮。
1.服務器與考試管理機端的設計思路
服務器與考試管理機端在考試中承擔了數據核心中轉、考試管理的重要任務,所以,在整個考試系統(tǒng)中占有核心地位,目前在普遍使用的網絡C/S考試系統(tǒng)中大都采用瘦客戶端方式,也就是說,客戶端僅擔任考生考試平臺的作用,主要的工作是由服務器和考試管理機來完成的。因此,服務器與考試管理機端軟件的開發(fā)占有很重要的地位。
仔細分析網絡考試系統(tǒng),可以考慮服務器與考試管理機端所承擔的任務有:題庫的管理與加載、考生庫的管理與加載、考生的考試登錄、考試異常情況處理、考試數據處理等等。因此,服務器與考試管理機端的軟件框架如圖:

(1)題庫管理模塊
負責對考試所涉及的題庫的組織、加密和發(fā)送等工作,其中題庫我們采用數據庫的形式進行封裝,根據不同的考試可以分為客觀題和主觀題兩種,而在題目的編排上設計到題面和選項的組織,根據考試的規(guī)模,數據庫可以采用SQL或Access,在Delphi中,基本上可以采用三種數據庫引擎,即:ODBC引擎、ADO引擎以及Delphi自帶的BDE引擎,考慮到兼容性和易用性等方面的要求,首選采用基于OLE技術的ADO引擎技術。使用Delphi自帶的ADO數據庫組件即可輕松實現上述數據庫連接。主要使用TADOConnection和TADOQuery組件。TADOConnection負責數據庫的連接,只需對其連接字符串正確設置即可完成連接,TADOQuery組件負責具體操作數據庫,使用通用的SQL語言。
(2)考生管理模塊
負責考生信息的登錄、校驗的工作,也是采用數據庫方式進行管理,可以單獨存放于考生數據庫庫中,對于小型的考試,也可與成績庫一起打包。
(3)考試異常情況處理模塊
負責隨時考生考試情況,客戶端網絡故障處理以及考生因機器問題的處理解決辦法(移機考試或重新登錄),它需要在整個考試過程中監(jiān)視每一個客戶端的情況,一發(fā)現客戶端異常就要出現警告信息,以便于考務人員及時作出調整。
(4)考試成績處理與數據處理模塊
這是網絡考試中的最后一道環(huán)節(jié),它負責處理考生的考試成績的加密與打包,考生考試中間數據的備份和上傳。
2.考試客戶機的設計思想
客戶端承擔著考生的考試平臺,在與服務器的數據交換方面采用的組件主要也是TclientSocket組件,其監(jiān)聽端口與服務器設置一致,其工作方式采用ctBlocking模式,為可靠地進行與服務器的數據交換,客戶端采用TwinSocketStream流方式進行讀寫。
客戶端的主要任務是建立一個友好的人機交互界面,由于采用瘦客戶模式,因此,在一般的考試系統(tǒng)中,并不考慮在客戶端設計考試評分環(huán)節(jié),而是統(tǒng)一在服務器端進行評分。
3.考試服務器、考試客戶機數據通信協議的設計
在Delphi中,即使TclientSocket和TserverSocket能夠相互協調工作,但考慮到考試的特殊性,本考試系統(tǒng)在考試服務器和考試客戶機之間仍應該設計一個完整的數據交換協議,以便于最大限度地減少考試數據的錯誤傳遞。所以,必須建立一個所謂的“令牌”規(guī)則,在服務器(或客戶機)向客戶機(或服務器)發(fā)送第n條數據流后,不應該馬上發(fā)送第n+1條,而是在收到對方的“請求下一傳送”的“令牌”后才能繼續(xù)傳送數據,根據這個思想,我們實際上在TclientSocket和TserverSocket的基礎上開發(fā)了一個數據傳送中間件供整個系統(tǒng)使用。
三、考試系統(tǒng)開發(fā)中幾個重要技術
(一)組件開發(fā)技術
在Delphi中,開發(fā)組件使用三種方法:繼承、聚合和子類化,但是,不管什么方法,開發(fā)VCL組件都必須合理選擇和使用好父類,因為中間件的屬性和方法往往是繼承自父類,使用輕捷的父類能有效提高開發(fā)效率,例如本文所提及的考試服務器和考試客戶機之間的數據交換協議,我們就是分別繼承自TclientSocket和TserverSocket。
(二)掛鉤技術的合理使用
掛鉤技術即我們俗稱的“Hook”技術,Hook技術功能強大,它能成功地屏蔽系統(tǒng)事件,在考試系統(tǒng)的開發(fā)中,應該考慮到考生在考試中的各種操作習慣,甚至某些作弊手段,例如,為了防止考生有意無意地結束考試進程而導致考試無法進行,可建立鍵盤掛鉤,監(jiān)視Ctrl+Alt+Del鍵的情況,屏蔽任務管理器。
(三)數據加密技術
考試數據的加密無疑是考試安全的保障,對考試數據的加密是保證考試公平的有效手段,本文采用內存壓縮流的方法就是針對數據加密而提出的解決方法,對于數據庫的加密,也可考慮對關鍵數據實行高強度MD5加密方法進行。
總之,無紙化考試系統(tǒng)將越來越多地使用在各種考試形式中,它對考試的更加公平、更加公正無疑起著重要的推動作用。
參考文獻:
[1]羅小平,《Delphi精要》,電子工業(yè)出版社,2004年1月出版.
[2]靜海,《深入Delphi網絡編程》,2001年10月出版.
[3]朱蓉、張鼎,《基于Java Socket技術的網絡考試模擬系統(tǒng)的開發(fā)》,《嘉興學院學報》,2005.第17卷,第06期.
[4]劉暢,《Socket技術在小型C/S應用程序加密中的應用》,《科技咨詢導報》2007.第24期.
[5]沈祥鴻、范云芝,《Delphi6.0與VB6.0中的Socket技術對比分析及集成》,《信陽農業(yè)高等專科學校學報》,2005.第15卷,第03期.
作者簡介:
陳曉舟,江蘇無錫人,江南大學工程碩士,無錫市廣播電視大學講師;林意,江蘇無錫人,江南大學教授。