黃正亮,卓明敏,廖小于
(贛州師范高等??茖W(xué)校 計算機系,江西 贛州 341000)
ASP.NET網(wǎng)頁在教學(xué)中的實時應(yīng)用
黃正亮,卓明敏,廖小于
(贛州師范高等??茖W(xué)校 計算機系,江西 贛州 341000)
為解決ASP.NET頁面狀態(tài)保持時間出現(xiàn)的超時問題,提出通過服務(wù)器代碼C#中的數(shù)據(jù)(CS)與客戶端腳本中的數(shù)據(jù)(JS)進行對接的解決方案。該方案依賴于客戶機時鐘的準(zhǔn)確性,又提出改進計時器的優(yōu)化方案。兩種方案均實現(xiàn)了ASP.NET頁面狀態(tài)超長時間保持,已成功應(yīng)用于高校教學(xué)在線考試考核中,在電子商務(wù)、網(wǎng)絡(luò)辦公等方面均有較好的應(yīng)用前景。
ASP.NET;狀態(tài)保持;Web;CS;JS
在ASP.NET在線測試類網(wǎng)頁,當(dāng)測試者登錄測試頁面后,如果做題時間超過20分鐘后,“提交”則不一定成功,經(jīng)檢查,是頁面狀態(tài)保持時間出現(xiàn)問題。在將Session有效值設(shè)置為足夠大后,雖然可提高“提交”成功率,仍不能做到100%成功提交;更改網(wǎng)站應(yīng)用程序池的超時設(shè)置,又會影響其他頁面的默認設(shè)置。針對測試頁面狀態(tài)保持時間出現(xiàn)的問題,設(shè)想在測試頁面中每隔一定時間自動產(chǎn)生一個“回發(fā)”(Postback)操作,利用“回發(fā)”操作延長頁面狀態(tài)保持時間,問題便能迎刃而解。對習(xí)慣于桌面程序設(shè)計的程序員而言,自然就會想到使用定時器,但ASP.NET網(wǎng)頁有其獨特的生命周期,如果借助服務(wù)器的事件產(chǎn)生實時計時,服務(wù)器將不堪重負;如果僅使用客戶端腳本[1],操作中如出現(xiàn)頁面“回發(fā)”,會導(dǎo)致定時器重新從0開始計時,從而不能連續(xù)計時,無法實現(xiàn)定時“回發(fā)”和限時“提交”。為此,本文提出一種將以上二者結(jié)合起來的方法,用以延長ASP. NET頁面狀態(tài)保持時間。
1.1 基本方案策略及關(guān)鍵代碼
在Web應(yīng)用實驗中發(fā)現(xiàn),將服務(wù)器代碼C#中的數(shù)據(jù)(CS)與客戶端腳本中的數(shù)據(jù)(JS)進行對接,就可能延長ASP.NET頁面狀態(tài)保持時間,按照“客戶機實時時間-(服務(wù)器)頁面開始時間=計時時長”的思路得以實現(xiàn)。
通過在(標(biāo)記代碼)頁面上增加一個服務(wù)器標(biāo)簽控件Label1,當(dāng)測試者登錄該頁面時,由CS使用Label1控件記錄開始測試的服務(wù)器時間DT0[2],再由客戶端腳本讀取Label1控件的值DT0,并計算出該起始時間DT0與客戶端的實時時間DT的差(DT-DT0)得到TL,即測試頁實際實時計時時長。由于Label1是Web服務(wù)器對象,其值DT0在頁面“回發(fā)”時可一直保持下來,因為計時器函數(shù)每次(包括頁面“回發(fā)”后)都是由實時時間值DT減去開始時間值DT0得到時長TL,從而實現(xiàn)連續(xù)自動計時。利用連續(xù)計時的實用“計時器”,再通過該計時器定時調(diào)用服務(wù)器事件代碼[3],即可實現(xiàn)定時“回發(fā)”和限時“提交”。延長ASP.NET頁面狀態(tài)保持時間的基本方案流程如圖1所示。
圖1 延長ASP.NET頁面狀態(tài)保持時間的基本方案流程
實現(xiàn)該基本方案的相關(guān)參考代碼中,其中標(biāo)記代碼頁(timejs.aspx)中的關(guān)鍵代碼如下:
后臺代碼頁(timejs.aspx.cs)有關(guān)代碼如下:
1.2 基本方案運行效果
該基本方案實際運行效果如圖2所示。
圖2 延長ASP.NET頁面狀態(tài)保持時間的基本方案實際運行效果
該基本方案在實際測試中效果較為理想,幾乎與桌面版普通計時器一樣,而且對服務(wù)器資源依賴較少,已經(jīng)過多次大規(guī)模的實際測試,只要客戶機的時鐘設(shè)置基本正常,即可100%實現(xiàn)連續(xù)計時,從而一直保持與服務(wù)器的“握手”狀態(tài),最終使測試結(jié)果得以成功提交。但如果客戶機時鐘與服務(wù)器時鐘有較大差距,則仍會出現(xiàn)計時不正常,甚至出現(xiàn)“倒計時”現(xiàn)象,因而該基本方案仍有待優(yōu)化改進。
圖3 改進計時器的優(yōu)化方案流程
2.1 優(yōu)化方案策略及客戶端腳本代碼
為避免對客戶機時鐘準(zhǔn)確性的依賴,在ASP. NET網(wǎng)頁的教學(xué)狀態(tài)管理時,如能利用ASP.NET的視圖狀態(tài)(ViewState)變量結(jié)合客戶機的腳本累加器,就有可能擺脫對客戶機時鐘準(zhǔn)確性的依賴,達到連續(xù)計時又不依賴于客戶機時鐘的準(zhǔn)確性。經(jīng)過多次實驗后,終于將頁面連續(xù)計時部分的隱患徹底排除,按照“(服務(wù)器)階段計時值+客戶端連續(xù)計時值=計時時長”的思路得以實現(xiàn)。
用戶在登錄時由CS記錄開始時間到視圖狀態(tài)變量ViewState[“st0”][4],同時客戶端腳本中的累加器從0開始計時,當(dāng)計時到約定的時刻調(diào)用“暫存答卷”鈕的單擊事件代碼,由CS在服務(wù)器端通過服務(wù)器當(dāng)前時間-ViewState [“st0”]中的開始時間計算出已用去的時間(秒數(shù)),并將該時間(秒數(shù))傳回到客戶端的一標(biāo)簽控件或隱藏域控件中,同時將客戶端腳本中的累加器重置,重新以標(biāo)簽控件中值(秒數(shù))作為計數(shù)的初值而繼續(xù)計時,從而實現(xiàn)連續(xù)精確計時。這樣,不管客戶端時鐘是否準(zhǔn)確,都對測試網(wǎng)頁的精確計時影響不大。改進計時器的優(yōu)化方案流程如圖3所示。
優(yōu)化方案客戶端腳本代碼如下:
后臺開始登錄計時的C#代碼如下:
2.2 優(yōu)化方案運行效果
改進計時器的優(yōu)化方案實際運行效果如圖4所示。
優(yōu)化方案實際運行的計時效果較為理想,完全不依賴客戶機實際時鐘值,只是借助客戶端腳本(JS)的計秒累加操作,且并沒有明顯增加對服務(wù)器的依賴。在成規(guī)模性的實際測試中,基本實現(xiàn)了全部自動提交的預(yù)定要求,使考試換場變得更為簡單方便。如果客戶機時鐘計秒值出現(xiàn)問題,就會出現(xiàn)客戶端計時與服務(wù)器計時有誤差的現(xiàn)象,但在“回發(fā)”時仍可通過服務(wù)器控件事件代碼給予校正。
圖4 改進計時器的優(yōu)化方案實際運行效果
對比基本方案和優(yōu)化方案,在網(wǎng)絡(luò)順暢的情況下通過定時回訪服務(wù)器均可延長ASP.NET頁面狀態(tài)保持時間,理論上延長的時間不受限制,使用起來都很方便。前者對服務(wù)器依賴較低,但對客戶端時鐘有較統(tǒng)一的要求;后者計時更準(zhǔn)確,但對服務(wù)器的依賴較前者稍高,對客戶機則幾乎沒有要求,且未見例外情況出現(xiàn)?;谏鲜龇桨搁_發(fā)的ASP.NET網(wǎng)頁在教學(xué)中的實時應(yīng)用,已經(jīng)贛州師范高等??茖W(xué)校運行多年,未出現(xiàn)任何原則性問題。根據(jù)網(wǎng)絡(luò)應(yīng)用的市場預(yù)測,二者進一步改進和完善后,在電子商務(wù)[5]、網(wǎng)絡(luò)辦公、在線考試程序等方面均有較好的應(yīng)用前景。
[1] 李正吉.ASP.NET網(wǎng)站開發(fā)技術(shù)(項目式)[M].北京:人民郵電出版社,2011:64-70.
[2] 許鎖坤.ASP.NET技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2007:59-60.
[3] Js調(diào)用后臺點擊事件[EB/OL].(2012-06-28)[2016-08-20].https://zhidao.baidu.com/question/444257668.html.
[4] 徐謖.ASP.NET應(yīng)用與開發(fā)案例教程[M].北京:清華大學(xué)出版社,2005:224-226.
[5] 孟昊雨,田啟明.CMS營銷型網(wǎng)站的建設(shè)[J].溫州職業(yè)技術(shù)學(xué)院學(xué)報,2015(4):43-45.
[責(zé)任編輯:田啟明]
Real-time Application of ASP.NET Website in Teaching
HUANG Zhengliang, ZHUO Mingmin, LIAO Xiaoyu
(Computer Department, Ganzhou Teachers College, Ganzhou, 341000, China)
To solve the timeout problem of ASP.NET website maintenance, the paper proposes to combine the data of server code C# (CS) with the data of client script (JS). Since the solution depends on the accuracy of clients’clock, the paper also puts forward an optimization method of improving timer. By adopting the two methods, long-time maintenance of ASP.NET website can be achieved. It has been successfully applied to online examinations in university education. And it also has a bright prospect in f elds like E-commerce and online off ce.
ASP.NET; State maintenance; Web; CS; JS
TP393.092
A
1671-4326 (2017) 01-0053-04
10.13669/j.cnki.33-1276/z.2017.012
2016-09-14
江西省教育廳科學(xué)技術(shù)研究項目(GJJ151364)
黃正亮(1963—),男,江西南康人,贛州師范高等??茖W(xué)校計算機系副教授;
卓明敏(1963—),男,江西南康人,贛州師范高等專科學(xué)校計算機系教授;
廖小于(1969—),女,江西于都人,贛州師范高等??茖W(xué)校計算機系副教授.