李詠琪
(湖北廣播電視大學(xué),湖北 武漢 430073)
基于ASP.NET Ajax技術(shù)的網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計(jì)
李詠琪
(湖北廣播電視大學(xué),湖北 武漢 430073)
Ajax技術(shù)使客戶(hù)端不需要刷新瀏覽器,就可以得到更新過(guò)的數(shù)據(jù),實(shí)現(xiàn)頁(yè)面的局部刷新。Ajax技術(shù)應(yīng)用于網(wǎng)絡(luò)考試系統(tǒng),可以帶給考生更好的用戶(hù)體驗(yàn)。本文對(duì)Ajax技術(shù)進(jìn)行了分析,對(duì)《計(jì)算機(jī)應(yīng)用基礎(chǔ)》網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計(jì)進(jìn)行了論述。
網(wǎng)絡(luò)考試系統(tǒng);Ajax;局部更新
隨著Internet的快速發(fā)展,網(wǎng)絡(luò)技術(shù)逐漸滲入到社會(huì)生活的各個(gè)層面。傳統(tǒng)的教育方式也面臨著變革,教學(xué)手段不斷發(fā)展變化??荚囀墙虒W(xué)的重要環(huán)節(jié)??荚嚪绞揭舱陔S著Internet技術(shù)的進(jìn)步在不斷的更新發(fā)展。
傳統(tǒng)的考試以筆試為主,網(wǎng)絡(luò)考試是傳統(tǒng)考試的延伸,它大大簡(jiǎn)化了傳統(tǒng)考試的過(guò)程。網(wǎng)絡(luò)考試與傳統(tǒng)的考試形式相比,減少了出卷,批改試卷等工作所需的精力和時(shí)間,具有組織考試簡(jiǎn)單方便的優(yōu)點(diǎn)。與傳統(tǒng)考試相比,網(wǎng)絡(luò)考試系統(tǒng)具有很大的優(yōu)勢(shì):一方面,只要準(zhǔn)備好足夠大的題庫(kù),便可以動(dòng)態(tài)地管理各種考試信息;另一方面,考試時(shí)間靈活,可以在規(guī)定時(shí)間段內(nèi)的任意時(shí)間參加考試。第三,網(wǎng)絡(luò)考試的最大特點(diǎn)是閱卷速度快,計(jì)算機(jī)閱卷給了考生最大的公平感。
《計(jì)算機(jī)應(yīng)用基礎(chǔ)課》是我校全校性的公共基礎(chǔ)課,由于修讀該課程的學(xué)生人數(shù)多,組織考試的工作量很大,計(jì)算機(jī)應(yīng)用基礎(chǔ)網(wǎng)絡(luò)考試系統(tǒng)的使用,在一定程度上減輕了教師的負(fù)擔(dān),使試卷的生成、批改、成績(jī)的統(tǒng)計(jì)都實(shí)現(xiàn)了自動(dòng)化,使考核更加公平、準(zhǔn)確,有良好的實(shí)用價(jià)值和應(yīng)用前景。
網(wǎng)絡(luò)考試系統(tǒng)的實(shí)現(xiàn)技術(shù)有多種。在傳統(tǒng)的使用動(dòng)態(tài)HTML技術(shù)開(kāi)發(fā)的網(wǎng)絡(luò)考試系統(tǒng)中,有時(shí)頁(yè)面只有很小一部分的更改,都需要服務(wù)器向客戶(hù)端返回一個(gè)完整的 HTML頁(yè)面。當(dāng)參加考試人員較多,要傳送的數(shù)據(jù)量大或網(wǎng)絡(luò)速度較慢時(shí),容易出現(xiàn)白屏現(xiàn)象,考生需要等待較長(zhǎng)時(shí)間,頁(yè)面回送后才能做下一道題。隨著Ajax技術(shù)的出現(xiàn)與應(yīng)用,為上述問(wèn)題的解決提供了很好的解決方案。
Ajax是 Asynchronous JavaScript And XML(異步JavaScript 和 XML)的縮寫(xiě),是多種技術(shù)的集合。Ajax使用通信技術(shù)(通常為SOAP和XML)向服務(wù)器發(fā)送異步請(qǐng)求和接收服務(wù)器的異步響應(yīng),然后利用顯示技術(shù)(JavaScript、DOM、HTML和CSS)處理響應(yīng)。Ajax使開(kāi)發(fā)人員能夠通過(guò)JavaScript 調(diào)用執(zhí)行服務(wù)器端方法,此時(shí),客戶(hù)端不需要刷新瀏覽器,就可以得到更新過(guò)的數(shù)據(jù),實(shí)現(xiàn)頁(yè)面的局部刷新。Ajax技術(shù)應(yīng)用于網(wǎng)絡(luò)考試系統(tǒng),可以帶給考生更好的用戶(hù)體驗(yàn),學(xué)生在進(jìn)入下一題時(shí),不會(huì)有畫(huà)面的閃爍換頁(yè),答題頁(yè)面是局部更新,在不換頁(yè)的情況下,讀取Server端的數(shù)據(jù)來(lái)局部更新頁(yè)面。通過(guò)應(yīng)用Ajax技術(shù),減少了服務(wù)器與瀏覽器交換的數(shù)據(jù)量,提高了交互效率,使網(wǎng)絡(luò)在線(xiàn)考試系統(tǒng)更加完善和成熟。
通常,典型的Ajax應(yīng)用程序都會(huì)或多或少地使用下列幾種技術(shù)。
(1)描述頁(yè)面的HTML/XHTML
(2)表示文檔結(jié)構(gòu)的DOM
(3)定義元素樣式的CSS
(4)表示服務(wù)器和客戶(hù)端通信內(nèi)容的XML或JSON
(5)服務(wù)器端處理瀏覽器請(qǐng)求的CGI
(6)實(shí)現(xiàn)與服務(wù)器異步通信XMLHttpRequest對(duì)象
作為Ajax的最核心部分——XMLHttpRequest對(duì)象是當(dāng)今所有AJAX和Web2.0應(yīng)用程序的技術(shù)基礎(chǔ),是一套可以在JavaScript、VBScript等腳本語(yǔ)言中,通過(guò)HTTP協(xié)議傳送或接收XML及其他數(shù)據(jù)的API。
XMLHttpRequest對(duì)象的強(qiáng)大之處在于,它允許開(kāi)發(fā)者在JavaScript 中以異步的方式向服務(wù)器發(fā)出HTTP請(qǐng)求并得到響應(yīng)。這就讓客戶(hù)端可以在任何時(shí)候與服務(wù)器進(jìn)行通信,而并不僅限于在整個(gè)頁(yè)面提交的時(shí)候。同時(shí),它的異步調(diào)用模型也并不會(huì)阻塞用戶(hù)的當(dāng)前操作,用戶(hù)在等待時(shí)仍可以進(jìn)行其他操作。
在Ajax中,XMLHttpRequest與服務(wù)器通信的步驟如圖1所示。
圖1 XMLHttpRequest與服務(wù)器通信的步驟
①在Ajax交互中,首先由一個(gè)客戶(hù)端觸發(fā)一個(gè)Ajax事件。
②創(chuàng)建 XMLHttpRequest對(duì)象的一個(gè)實(shí)例。使用 open()方法設(shè)置服務(wù)器URL以及所希望的HTTP方法(通常是GET或POST)。請(qǐng)求實(shí)際上通過(guò)send()方法調(diào)用觸發(fā)。
③向服務(wù)器做出請(qǐng)求,可以調(diào)用Servlet、CGI腳本等任何服務(wù)器端技術(shù)。
④在服務(wù)器端根據(jù)請(qǐng)求做出相應(yīng)的處理,包括訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),甚至訪(fǎng)問(wèn)另一個(gè)系統(tǒng)。
⑤請(qǐng)求返回到瀏覽器。
⑥XMLHttpRequest對(duì)象在接收到響應(yīng)后,根據(jù)配置調(diào)用 callback()函數(shù)處理返回結(jié)果。這個(gè)函數(shù)會(huì)檢查XMLHttpRequest對(duì)象的readyState屬性,然后查看服務(wù)器返回的狀態(tài)碼。如果一切正常,callback()函數(shù)就會(huì)在客戶(hù)端做相應(yīng)的處理。
(7)協(xié)調(diào)上述各種技術(shù)的JavaScript。
網(wǎng)絡(luò)考試系統(tǒng)實(shí)現(xiàn)的主要技術(shù)是 ASP.NET Ajax技術(shù)。開(kāi)發(fā)模式選用Ajax框架。Ajax框架現(xiàn)在已有很多,通過(guò)使用Ajax框架進(jìn)行Web開(kāi)發(fā)可以提高效率,并且代碼穩(wěn)定性好。其中ASP.NET Ajax是由微軟公司Atlas演化而來(lái)的,是Microsoft在.NET環(huán)境中應(yīng)用Ajax開(kāi)發(fā)框架的簡(jiǎn)稱(chēng)。它是一套相當(dāng)完整的Ajax解決方案。
ASP.NET的開(kāi)發(fā)環(huán)境采用的是 Visual Studio 2005。Visual Studio 2005是隨著.NET Framework 2.0一同發(fā)布的集成開(kāi)發(fā)環(huán)境。本系統(tǒng)采用的開(kāi)發(fā)語(yǔ)言是 c#。系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)采用的是SQL Server2000。ASP.NET與數(shù)據(jù)源的連接是通過(guò)ADO.NET進(jìn)行的。與ADO相比,ADO是基于連接的,而ADO.NET是依賴(lài)于簡(jiǎn)短的、基于XML的消息與數(shù)據(jù)源進(jìn)行交互。對(duì)于基于 Internet的應(yīng)用程序而言,ADO.NET的效率要高得多。
ASP.NET 2.0應(yīng)用程序的運(yùn)行宿主是微軟的 IIS,該軟件整合在Windows Server 2003中。在Windows XP環(huán)境下,自帶了一個(gè)IIS的5.1 版本,可在開(kāi)發(fā)時(shí)作本地調(diào)試。
系統(tǒng)設(shè)計(jì)的基礎(chǔ)是系統(tǒng)架構(gòu)。計(jì)算機(jī)網(wǎng)絡(luò)考試的基本體系結(jié)構(gòu),主要可以分為兩類(lèi):C/S和B/S。與C/S相比,B/S結(jié)構(gòu)的產(chǎn)品體現(xiàn)著更為方便的特性。B/S結(jié)構(gòu)的軟件只需要管理服務(wù)器,所有的客戶(hù)端只是瀏覽器,不需要做維護(hù),對(duì)軟件功能的擴(kuò)展僅需要對(duì)服務(wù)器端軟件進(jìn)行修改就能使所有用戶(hù)同時(shí)升級(jí)至新功能。B/S系統(tǒng)有三種架構(gòu)方式:?jiǎn)螌釉O(shè)計(jì)架構(gòu)、二層設(shè)計(jì)架構(gòu)、三層設(shè)計(jì)架構(gòu)。本系統(tǒng)采用的是較為簡(jiǎn)單的二層架構(gòu)。從代碼復(fù)雜度來(lái)看,層次越多代碼越復(fù)雜,函數(shù)的層層調(diào)用會(huì)影響程序的執(zhí)行速度。分層架構(gòu)影響應(yīng)用程序的執(zhí)行速度,但在很多企業(yè)級(jí)應(yīng)用中使用三層架構(gòu),因?yàn)槠溆休^好的擴(kuò)展性。其速度上的劣勢(shì),可以通過(guò)將應(yīng)用分布在不同服務(wù)器上加以解決。綜合考慮網(wǎng)絡(luò)考試的要求,我采用了二層設(shè)計(jì)架構(gòu)。
對(duì)于網(wǎng)絡(luò)考試系統(tǒng),最終目的是生成試卷,進(jìn)行考試。圍繞這個(gè)核心功能,還有一些輔助功能,考試信息的設(shè)置,題庫(kù)的生成等。
網(wǎng)絡(luò)考試系統(tǒng)的用戶(hù)可分為三類(lèi):管理員,教師和學(xué)生。(一)管理員可以輸入試題,生成題庫(kù);輸入考試班級(jí)信息和任課教師信息;開(kāi)啟考試和關(guān)閉考試,這個(gè)功能可以控制考試時(shí)間,在考試時(shí)間才可以進(jìn)行考試。管理員是對(duì)整個(gè)考試信息進(jìn)行管理。(二)教師對(duì)學(xué)生進(jìn)行管理。教師可以輸入考生信息;查詢(xún)班級(jí)成績(jī);查詢(xún)某個(gè)考生的成績(jī);查詢(xún)考生試卷;修改考生的考試狀態(tài),這個(gè)功能可以設(shè)置一些停考的考生,考試狀態(tài)設(shè)為關(guān)閉后,就不能參加考試了。教師只能對(duì)本班的學(xué)生進(jìn)行查詢(xún)操作。(三)學(xué)生登錄后,如果是考試時(shí)間,即考試開(kāi)啟了,并且學(xué)生可以參加考試,就進(jìn)入考試,隨機(jī)生成試題,學(xué)生開(kāi)始考試;如果在考試過(guò)程中,出現(xiàn)死機(jī),退出考試,系統(tǒng)記錄考試當(dāng)前狀態(tài),學(xué)生可以通過(guò)二次登錄再次進(jìn)入考試,繼續(xù)退出時(shí)的狀態(tài)進(jìn)行考試。考試完畢學(xué)生可以點(diǎn)擊交卷結(jié)束考試,到了考試結(jié)束時(shí)間,系統(tǒng)也會(huì)自動(dòng)結(jié)束考試。學(xué)生只能考試一次,學(xué)生一旦進(jìn)入交卷,學(xué)生的考試狀態(tài)就設(shè)為關(guān)閉了,考試完畢就不能再考試了。如果要補(bǔ)考,則必須把原來(lái)的試卷刪除,系統(tǒng)會(huì)把學(xué)生的考試狀態(tài)重新開(kāi)啟,才能補(bǔ)考。
網(wǎng)絡(luò)考試的幾個(gè)關(guān)鍵問(wèn)題,①實(shí)現(xiàn)動(dòng)態(tài)隨機(jī)的抽題,每位考生的試卷不同。②考試過(guò)程中出現(xiàn)異常情況退出考試,可以實(shí)現(xiàn)二次登錄,繼續(xù)考試。③考試頁(yè)面的局部刷新。④采用各種方法,盡量提高系統(tǒng)性能,減輕服務(wù)器負(fù)擔(dān),達(dá)到在線(xiàn)考試的滿(mǎn)意效果。
試卷試題的生成使用動(dòng)態(tài)隨機(jī)抽題。實(shí)現(xiàn)方法如下:數(shù)據(jù)庫(kù)的試題表中有試題編號(hào)字段和所屬章節(jié)字段,根據(jù)不同的章節(jié),建立了六個(gè)章節(jié)試題的視圖。隨機(jī)抽題的時(shí)候,從視圖中隨機(jī)生成題號(hào),抽取指定數(shù)量的試題。在考試時(shí)如果出現(xiàn)異常情況退出考試,可以二次登錄,繼續(xù)考試。實(shí)現(xiàn)方法為:在考生點(diǎn)擊下一題時(shí),把考生做的這一題的答案放入一個(gè)暫存表??忌卿洉r(shí),系統(tǒng)會(huì)根據(jù)是第一次登錄還是再次登錄,決定是否從暫存表加載答案。如果是再次登錄,系統(tǒng)就會(huì)從暫存表加載答案。為了減輕服務(wù)器的負(fù)擔(dān),系統(tǒng)把考試的計(jì)時(shí)放到客戶(hù)端,而且頁(yè)面的更新為局部更新,減少傳輸?shù)臄?shù)據(jù)量。
系統(tǒng)總體劃分為三個(gè)模塊,即管理員模塊、教師模塊和學(xué)生模塊。管理員的功能模塊如圖 2所示。
圖2 管理員模塊
教師的功能模塊包括錄入學(xué)生,查詢(xún)班級(jí)成績(jī),查詢(xún)學(xué)生成績(jī),查詢(xún)學(xué)生試卷,更改學(xué)生考試狀態(tài),查詢(xún)學(xué)生信息,查詢(xún)班級(jí)信息和刪除學(xué)生試卷模塊。
學(xué)生考試流程如圖3所示。
圖3 學(xué)生考試流程
基于ASP.NET Ajax技術(shù)的《計(jì)算機(jī)應(yīng)用基礎(chǔ)》網(wǎng)絡(luò)考試系統(tǒng)現(xiàn)已投入使用,基本運(yùn)行正常。但還有可以繼續(xù)深入研究的內(nèi)容?,F(xiàn)將內(nèi)容簡(jiǎn)要列出,以作為將來(lái)繼續(xù)研究的參考。(1)考試題型的多樣化??陀^題可以進(jìn)行計(jì)算機(jī)閱卷。主觀題可以讓教師在計(jì)算機(jī)上閱卷。試卷如果既有主觀題,又有客觀題,可以采用計(jì)算機(jī)閱卷與人工閱卷相結(jié)合的方式。(2)考試信息的加密。系統(tǒng)在數(shù)據(jù)庫(kù)中存儲(chǔ)的信息都是明文的形式,為提高系統(tǒng)的安全性,可以對(duì)考試信息進(jìn)行加密。(3)成績(jī)的統(tǒng)計(jì)分析。在線(xiàn)考試的成績(jī)信息還只是基本的呈現(xiàn)功能,可以增加統(tǒng)計(jì)分析功能,對(duì)考試結(jié)果進(jìn)行自動(dòng)統(tǒng)計(jì)分析并實(shí)現(xiàn)圖形化顯示。
[1] 陳黎夫. ASP.NET AJAX程序設(shè)計(jì)[M]. 人民郵電出版社.
[2] 黃桂金,宋強(qiáng),王占中. ASP.NET AJAX網(wǎng)站開(kāi)發(fā)從入門(mén)到精通[M]. 清華大學(xué)出版社.
TP311
A
1008-7427(2011)01-0155-02
2010-10-14
湖北開(kāi)放大學(xué)學(xué)報(bào)2011年1期