黃正亮,卓明敏,廖小于
(贛州師范高等專科學(xué)校 計(jì)算機(jī)系,江西 贛州 341000)
ASP.NET網(wǎng)頁(yè)在教學(xué)中的實(shí)時(shí)應(yīng)用
黃正亮,卓明敏,廖小于
(贛州師范高等??茖W(xué)校 計(jì)算機(jī)系,江西 贛州 341000)
為解決ASP.NET頁(yè)面狀態(tài)保持時(shí)間出現(xiàn)的超時(shí)問(wèn)題,提出通過(guò)服務(wù)器代碼C#中的數(shù)據(jù)(CS)與客戶端腳本中的數(shù)據(jù)(JS)進(jìn)行對(duì)接的解決方案。該方案依賴于客戶機(jī)時(shí)鐘的準(zhǔn)確性,又提出改進(jìn)計(jì)時(shí)器的優(yōu)化方案。兩種方案均實(shí)現(xiàn)了ASP.NET頁(yè)面狀態(tài)超長(zhǎng)時(shí)間保持,已成功應(yīng)用于高校教學(xué)在線考試考核中,在電子商務(wù)、網(wǎng)絡(luò)辦公等方面均有較好的應(yīng)用前景。
ASP.NET;狀態(tài)保持;Web;CS;JS
在ASP.NET在線測(cè)試類網(wǎng)頁(yè),當(dāng)測(cè)試者登錄測(cè)試頁(yè)面后,如果做題時(shí)間超過(guò)20分鐘后,“提交”則不一定成功,經(jīng)檢查,是頁(yè)面狀態(tài)保持時(shí)間出現(xiàn)問(wèn)題。在將Session有效值設(shè)置為足夠大后,雖然可提高“提交”成功率,仍不能做到100%成功提交;更改網(wǎng)站應(yīng)用程序池的超時(shí)設(shè)置,又會(huì)影響其他頁(yè)面的默認(rèn)設(shè)置。針對(duì)測(cè)試頁(yè)面狀態(tài)保持時(shí)間出現(xiàn)的問(wèn)題,設(shè)想在測(cè)試頁(yè)面中每隔一定時(shí)間自動(dòng)產(chǎn)生一個(gè)“回發(fā)”(Postback)操作,利用“回發(fā)”操作延長(zhǎng)頁(yè)面狀態(tài)保持時(shí)間,問(wèn)題便能迎刃而解。對(duì)習(xí)慣于桌面程序設(shè)計(jì)的程序員而言,自然就會(huì)想到使用定時(shí)器,但ASP.NET網(wǎng)頁(yè)有其獨(dú)特的生命周期,如果借助服務(wù)器的事件產(chǎn)生實(shí)時(shí)計(jì)時(shí),服務(wù)器將不堪重負(fù);如果僅使用客戶端腳本[1],操作中如出現(xiàn)頁(yè)面“回發(fā)”,會(huì)導(dǎo)致定時(shí)器重新從0開(kāi)始計(jì)時(shí),從而不能連續(xù)計(jì)時(shí),無(wú)法實(shí)現(xiàn)定時(shí)“回發(fā)”和限時(shí)“提交”。為此,本文提出一種將以上二者結(jié)合起來(lái)的方法,用以延長(zhǎng)ASP. NET頁(yè)面狀態(tài)保持時(shí)間。
1.1 基本方案策略及關(guān)鍵代碼
在Web應(yīng)用實(shí)驗(yàn)中發(fā)現(xiàn),將服務(wù)器代碼C#中的數(shù)據(jù)(CS)與客戶端腳本中的數(shù)據(jù)(JS)進(jìn)行對(duì)接,就可能延長(zhǎng)ASP.NET頁(yè)面狀態(tài)保持時(shí)間,按照“客戶機(jī)實(shí)時(shí)時(shí)間-(服務(wù)器)頁(yè)面開(kāi)始時(shí)間=計(jì)時(shí)時(shí)長(zhǎng)”的思路得以實(shí)現(xiàn)。
通過(guò)在(標(biāo)記代碼)頁(yè)面上增加一個(gè)服務(wù)器標(biāo)簽控件Label1,當(dāng)測(cè)試者登錄該頁(yè)面時(shí),由CS使用Label1控件記錄開(kāi)始測(cè)試的服務(wù)器時(shí)間DT0[2],再由客戶端腳本讀取Label1控件的值DT0,并計(jì)算出該起始時(shí)間DT0與客戶端的實(shí)時(shí)時(shí)間DT的差(DT-DT0)得到TL,即測(cè)試頁(yè)實(shí)際實(shí)時(shí)計(jì)時(shí)時(shí)長(zhǎng)。由于Label1是Web服務(wù)器對(duì)象,其值DT0在頁(yè)面“回發(fā)”時(shí)可一直保持下來(lái),因?yàn)橛?jì)時(shí)器函數(shù)每次(包括頁(yè)面“回發(fā)”后)都是由實(shí)時(shí)時(shí)間值DT減去開(kāi)始時(shí)間值DT0得到時(shí)長(zhǎng)TL,從而實(shí)現(xiàn)連續(xù)自動(dòng)計(jì)時(shí)。利用連續(xù)計(jì)時(shí)的實(shí)用“計(jì)時(shí)器”,再通過(guò)該計(jì)時(shí)器定時(shí)調(diào)用服務(wù)器事件代碼[3],即可實(shí)現(xiàn)定時(shí)“回發(fā)”和限時(shí)“提交”。延長(zhǎng)ASP.NET頁(yè)面狀態(tài)保持時(shí)間的基本方案流程如圖1所示。

圖1 延長(zhǎng)ASP.NET頁(yè)面狀態(tài)保持時(shí)間的基本方案流程
實(shí)現(xiàn)該基本方案的相關(guān)參考代碼中,其中標(biāo)記代碼頁(yè)(timejs.aspx)中的關(guān)鍵代碼如下:


后臺(tái)代碼頁(yè)(timejs.aspx.cs)有關(guān)代碼如下:

1.2 基本方案運(yùn)行效果
該基本方案實(shí)際運(yùn)行效果如圖2所示。

圖2 延長(zhǎng)ASP.NET頁(yè)面狀態(tài)保持時(shí)間的基本方案實(shí)際運(yùn)行效果
該基本方案在實(shí)際測(cè)試中效果較為理想,幾乎與桌面版普通計(jì)時(shí)器一樣,而且對(duì)服務(wù)器資源依賴較少,已經(jīng)過(guò)多次大規(guī)模的實(shí)際測(cè)試,只要客戶機(jī)的時(shí)鐘設(shè)置基本正常,即可100%實(shí)現(xiàn)連續(xù)計(jì)時(shí),從而一直保持與服務(wù)器的“握手”狀態(tài),最終使測(cè)試結(jié)果得以成功提交。但如果客戶機(jī)時(shí)鐘與服務(wù)器時(shí)鐘有較大差距,則仍會(huì)出現(xiàn)計(jì)時(shí)不正常,甚至出現(xiàn)“倒計(jì)時(shí)”現(xiàn)象,因而該基本方案仍有待優(yōu)化改進(jìn)。

圖3 改進(jìn)計(jì)時(shí)器的優(yōu)化方案流程
2.1 優(yōu)化方案策略及客戶端腳本代碼
為避免對(duì)客戶機(jī)時(shí)鐘準(zhǔn)確性的依賴,在ASP. NET網(wǎng)頁(yè)的教學(xué)狀態(tài)管理時(shí),如能利用ASP.NET的視圖狀態(tài)(ViewState)變量結(jié)合客戶機(jī)的腳本累加器,就有可能擺脫對(duì)客戶機(jī)時(shí)鐘準(zhǔn)確性的依賴,達(dá)到連續(xù)計(jì)時(shí)又不依賴于客戶機(jī)時(shí)鐘的準(zhǔn)確性。經(jīng)過(guò)多次實(shí)驗(yàn)后,終于將頁(yè)面連續(xù)計(jì)時(shí)部分的隱患徹底排除,按照“(服務(wù)器)階段計(jì)時(shí)值+客戶端連續(xù)計(jì)時(shí)值=計(jì)時(shí)時(shí)長(zhǎng)”的思路得以實(shí)現(xiàn)。
用戶在登錄時(shí)由CS記錄開(kāi)始時(shí)間到視圖狀態(tài)變量ViewState[“st0”][4],同時(shí)客戶端腳本中的累加器從0開(kāi)始計(jì)時(shí),當(dāng)計(jì)時(shí)到約定的時(shí)刻調(diào)用“暫存答卷”鈕的單擊事件代碼,由CS在服務(wù)器端通過(guò)服務(wù)器當(dāng)前時(shí)間-ViewState [“st0”]中的開(kāi)始時(shí)間計(jì)算出已用去的時(shí)間(秒數(shù)),并將該時(shí)間(秒數(shù))傳回到客戶端的一標(biāo)簽控件或隱藏域控件中,同時(shí)將客戶端腳本中的累加器重置,重新以標(biāo)簽控件中值(秒數(shù))作為計(jì)數(shù)的初值而繼續(xù)計(jì)時(shí),從而實(shí)現(xiàn)連續(xù)精確計(jì)時(shí)。這樣,不管客戶端時(shí)鐘是否準(zhǔn)確,都對(duì)測(cè)試網(wǎng)頁(yè)的精確計(jì)時(shí)影響不大。改進(jìn)計(jì)時(shí)器的優(yōu)化方案流程如圖3所示。
優(yōu)化方案客戶端腳本代碼如下:


后臺(tái)開(kāi)始登錄計(jì)時(shí)的C#代碼如下:


2.2 優(yōu)化方案運(yùn)行效果
改進(jìn)計(jì)時(shí)器的優(yōu)化方案實(shí)際運(yùn)行效果如圖4所示。
優(yōu)化方案實(shí)際運(yùn)行的計(jì)時(shí)效果較為理想,完全不依賴客戶機(jī)實(shí)際時(shí)鐘值,只是借助客戶端腳本(JS)的計(jì)秒累加操作,且并沒(méi)有明顯增加對(duì)服務(wù)器的依賴。在成規(guī)模性的實(shí)際測(cè)試中,基本實(shí)現(xiàn)了全部自動(dòng)提交的預(yù)定要求,使考試換場(chǎng)變得更為簡(jiǎn)單方便。如果客戶機(jī)時(shí)鐘計(jì)秒值出現(xiàn)問(wèn)題,就會(huì)出現(xiàn)客戶端計(jì)時(shí)與服務(wù)器計(jì)時(shí)有誤差的現(xiàn)象,但在“回發(fā)”時(shí)仍可通過(guò)服務(wù)器控件事件代碼給予校正。

圖4 改進(jìn)計(jì)時(shí)器的優(yōu)化方案實(shí)際運(yùn)行效果
對(duì)比基本方案和優(yōu)化方案,在網(wǎng)絡(luò)順暢的情況下通過(guò)定時(shí)回訪服務(wù)器均可延長(zhǎng)ASP.NET頁(yè)面狀態(tài)保持時(shí)間,理論上延長(zhǎng)的時(shí)間不受限制,使用起來(lái)都很方便。前者對(duì)服務(wù)器依賴較低,但對(duì)客戶端時(shí)鐘有較統(tǒng)一的要求;后者計(jì)時(shí)更準(zhǔn)確,但對(duì)服務(wù)器的依賴較前者稍高,對(duì)客戶機(jī)則幾乎沒(méi)有要求,且未見(jiàn)例外情況出現(xiàn)?;谏鲜龇桨搁_(kāi)發(fā)的ASP.NET網(wǎng)頁(yè)在教學(xué)中的實(shí)時(shí)應(yīng)用,已經(jīng)贛州師范高等??茖W(xué)校運(yùn)行多年,未出現(xiàn)任何原則性問(wèn)題。根據(jù)網(wǎng)絡(luò)應(yīng)用的市場(chǎng)預(yù)測(cè),二者進(jìn)一步改進(jìn)和完善后,在電子商務(wù)[5]、網(wǎng)絡(luò)辦公、在線考試程序等方面均有較好的應(yīng)用前景。
[1] 李正吉.ASP.NET網(wǎng)站開(kāi)發(fā)技術(shù)(項(xiàng)目式)[M].北京:人民郵電出版社,2011:64-70.
[2] 許鎖坤.ASP.NET技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2007:59-60.
[3] Js調(diào)用后臺(tái)點(diǎn)擊事件[EB/OL].(2012-06-28)[2016-08-20].https://zhidao.baidu.com/question/444257668.html.
[4] 徐謖.ASP.NET應(yīng)用與開(kāi)發(fā)案例教程[M].北京:清華大學(xué)出版社,2005:224-226.
[5] 孟昊雨,田啟明.CMS營(yíng)銷型網(wǎng)站的建設(shè)[J].溫州職業(yè)技術(shù)學(xué)院學(xué)報(bào),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ù)研究項(xiàng)目(GJJ151364)
黃正亮(1963—),男,江西南康人,贛州師范高等專科學(xué)校計(jì)算機(jī)系副教授;
卓明敏(1963—),男,江西南康人,贛州師范高等??茖W(xué)校計(jì)算機(jī)系教授;
廖小于(1969—),女,江西于都人,贛州師范高等專科學(xué)校計(jì)算機(jī)系副教授.
溫州職業(yè)技術(shù)學(xué)院學(xué)報(bào)2017年1期