周 彤,陳軍霞
射擊項目是我國競技體育優(yōu)勢項目,全國每年都會舉行各級別的分項或綜合比賽,競賽組織工作之初的報名報項是關(guān)系到比賽能否順利進行的關(guān)鍵。在以往的比賽組織工作中,賽事承辦單位先將統(tǒng)一格式的Excel電子文件分發(fā)到各地,在搜集并整理各地報名數(shù)據(jù)表之后將數(shù)據(jù)導(dǎo)入已有的競賽管理軟件中進行后續(xù)的工作。但在實際操作過程中由于操作要求不明確、Excel電子表格制定不嚴謹?shù)葐栴}導(dǎo)致在數(shù)據(jù)導(dǎo)入過程中頻繁出錯,使最終數(shù)據(jù)不一致。國家射擊射箭項目管理中心組織開發(fā)了射擊項目網(wǎng)上報名報項系統(tǒng),利用現(xiàn)有競賽管理軟件的數(shù)據(jù)庫,采用網(wǎng)上報名報項的形式,將數(shù)據(jù)直接寫入數(shù)據(jù)庫中,降低了運動員數(shù)據(jù)的出錯機率,減少了中間的周轉(zhuǎn)環(huán)節(jié)。
系統(tǒng)采用基于ASP.NET的三層結(jié)構(gòu)的瀏覽器/服務(wù)器(B/S)模式,運動員的數(shù)據(jù)通過網(wǎng)上報名報項系統(tǒng)直接提交到國家射擊射箭管理中心數(shù)據(jù)庫中集中管理。后臺數(shù)據(jù)庫采用已有射擊項目競賽管理軟件的Access數(shù)據(jù)庫,以便和現(xiàn)有管理系統(tǒng)進行兼容。開發(fā)的工具使用viusal Studio 2008與Dreamweaver。
整個報名報項過程分為網(wǎng)上注冊和網(wǎng)上報名報項兩個階段:1)各參賽單位上網(wǎng)進行參賽單位注冊工作,創(chuàng)建各地報名報項管理人員的帳號;2)按照競賽規(guī)程進行網(wǎng)上報名報項。
如圖1所示,網(wǎng)上報名報項系統(tǒng)分為參賽單位注冊、報名報項、系統(tǒng)管理等3個功能模塊,每個功能模塊又分別包含多個子模塊。
圖1 功能模塊
3.1.1 為何使用Ajax
在傳統(tǒng)的B/S交互模式中(如用戶提交表單),是由用戶觸發(fā)一個HTTP請求到服務(wù)器,服務(wù)器對其進行接受并進行處理后再返回一個新的HTHL頁面到客戶端。每當服務(wù)器處理客戶端提交的請求時,用戶需要等待服務(wù)器的響應(yīng),在等待期間,用戶不能做其它操作,這樣做存在兩個問題:第一是用戶需要等待,這就導(dǎo)致了用戶界面的響應(yīng)比本地應(yīng)用慢得多,產(chǎn)生了一定程度的滯后效應(yīng);第二個是,瀏覽器需要將整個頁面中的表單數(shù)據(jù)都提交給服務(wù)器,服務(wù)器也要生成一個全新的頁面再返回給瀏覽器,瀏覽器與服務(wù)器之間通訊的數(shù)據(jù)量將非常大。
與此不同的是,Ajax應(yīng)用可以僅向服務(wù)器發(fā)送并取回必需的數(shù)據(jù),它使用SOAP或其它一些基于XML的Web service接口,并在客戶端采用JavaScript處理來自服務(wù)器的響應(yīng)。這樣,在服務(wù)器和瀏覽器之間交換的數(shù)據(jù)就會大量減少,用戶就能看到響應(yīng)更快的應(yīng)用,用戶可以感覺到幾乎所有的操作都會很快響應(yīng)沒有頁面重載(白屏) 的等待。同時,很多的處理工作可以在發(fā)出請求的客戶端機器上完成,大大減輕Web服務(wù)器的負擔(dān)和處理時間。
3.1.2 系統(tǒng)實現(xiàn)
我們以系統(tǒng)中射擊大項與小項名稱聯(lián)動為例:
首先,在需要局部刷新的頁面內(nèi)創(chuàng)建ScriptManager控件和UpdatePanel控件ScriptManager是ASP.NET Ajax中一個重要的控件,它用來處理頁面上的所有ASP.NET Ajax組件以及局部頁面的更新,生成相關(guān)的客戶端腳本,所有需要支持ASP.NET Ajax的ASP.NET頁面上有且只能有一個ScriptManager控件。在ScriptManager控件中我們可以指定需要的腳本庫,或者指定通過JS來調(diào)用的Web Service,還可以指定頁面錯誤處理。UpdatePanel控件就是設(shè)置頁面中異步局部更新區(qū)域,它必須依賴于ScriptManager存在。
下一步,在UpdatePanel控件區(qū)域內(nèi)創(chuàng)建需局部更新數(shù)據(jù)的控件,這里我們添加兩個DropDownList控件,并設(shè)置大項DropDownList1控件的ListItems值。之后,編寫大項DropDownList1控件的SelectedIndexChanged事件代碼,代碼如下:
protected void DropDownList1_SelectedIndexChanged (object sender, EventArgs e)
{
DropDownList2.Items.Clear();
if (DropDownList1.SelectedValue == “步槍”)
{
DropDownList2.Items.Add (“10 m氣步槍”);
DropDownList2.Items.Add (“50 m步槍臥射”);
DropDownList2.Items.Add (“50 m步槍3種姿勢”);
}
else
{
DropDownList2.Items.Add (“10 m氣手槍”);
DropDownList2.Items.Add (“25 m手槍速射”);
DropDownList2.Items.Add (“25 m手槍慢加速”);
DropDownList2.Items.Add (“50 m手槍慢射”);
}
}
一旦DropDownList1控件選項值發(fā)生改變,則在頁面不用刷新的情況下DropDownList2控件的選項值會發(fā)生相應(yīng)變化。
3.2.1 為何使用Web緩存
評價網(wǎng)上應(yīng)用系統(tǒng)主要包括:系統(tǒng)的響應(yīng)時間、平均事務(wù)處理時間、數(shù)據(jù)庫服務(wù)器的負載、最大承載的并發(fā)用戶數(shù)等多個指標。由于網(wǎng)上射擊項目報名報項系統(tǒng)開放主要集中在一段時間,在這段時間里在線人數(shù)眾多,需要考慮減輕服務(wù)器的負擔(dān)。Web緩存是緩解網(wǎng)絡(luò)擁塞,減少訪問延遲的有效方法,也是一種無需大量時間和分析就可以獲得“足夠良好的”性能的方法。把用戶重復(fù)訪問的數(shù)據(jù)放入緩存,可以減少用戶對數(shù)據(jù)庫的訪問次數(shù),從而減輕數(shù)據(jù)庫服務(wù)器的負載,提高系統(tǒng)的響應(yīng)效率。
3.2.2 Web緩存原理及實現(xiàn)
ASP.NET提供了多種形式的緩存,本系統(tǒng)中使用了頁面級輸出緩存和編程緩存。輸出緩存的優(yōu)點是非常易于實現(xiàn),在大多數(shù)情況下都使用這種緩存技術(shù)。而編程緩存則提供了很大的靈活性,可用于在應(yīng)用程序的每一層利用緩存。
頁面級輸出緩存是在內(nèi)存中保留為響應(yīng)請求而發(fā)送的HTML的副本,其后再有請求時將提供緩存的輸出,直到緩存到期,這樣,性能有可能得到很大的提高。并允許以絕對時間(如12:00P.M.)或相對時間(如頁面最后一次被請求后的10分鐘)的方式指定頁面在緩存中保存的時間,這對于頁面中的數(shù)據(jù)在特定的時間內(nèi)變化不太頻繁的情況非常有用。ASP.NET在使用緩存中的輸出之前,會檢測一個頁面的輸入,如果輸入不同,那么就會產(chǎn)生一個新的輸出,而不會使用前一個輸出,保持輸出結(jié)果的準確性。
要實現(xiàn)頁面輸出緩存,只要將一條OutputCache指令添加到ASPX頁面的頂部,即在任何輸出之前。例如,本系統(tǒng)中根據(jù)調(diào)研和實踐測試,系統(tǒng)整個操作流程估計完成時間在為30分鐘,因此設(shè)置頁面級輸出緩存代碼為:
<%@OutputCache Duration=“1800” VaryByParam=“none”%>
在以往,編程人員常用Session對象和Application對象提供鍵值對來緩存數(shù)據(jù),Session對象保存與單個用戶有關(guān)的數(shù)據(jù),Application對象可保留與應(yīng)用程序有關(guān)的數(shù)據(jù),每個用戶都可以訪問。
在ASP.NET中,提供了專門用于緩存數(shù)據(jù)的Cache對象,它的應(yīng)用范圍是應(yīng)用程序域。生存期是和應(yīng)用程序緊密相關(guān)的,每當應(yīng)用程序啟動的時候就重新創(chuàng)建Cache對象,并且,Cache對象還提供了專門用于緩存管理的特性,比如依賴和過期策略。
在Cache中存儲數(shù)據(jù)的語法如下:
Cache[“key”] =“value”;
系統(tǒng)中在許多地方需調(diào)用數(shù)據(jù)庫連接字符串來連接數(shù)據(jù)庫,因此,可以將數(shù)據(jù)庫連接字符串存入Cache對象中,就無需在以后請求時從系統(tǒng)中讀取。代碼如下:
Cache (“ConnectionString”)=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SJJSRJ.mdb”;
射擊項目網(wǎng)上報名報項系統(tǒng)已開發(fā)完成,并進行了測試和完善,通過競賽報名報項情況看,達到了預(yù)期目標,提高了報名報項的效率和準確度。該系統(tǒng)后期將在此基礎(chǔ)上與國家體育總局運動員數(shù)據(jù)庫進行對接,將已有運動員信息進行直接獲取,保證信息的準確性。
[1] 李振坤,張朝暉,李小強.港澳臺僑聯(lián)招報名系統(tǒng)的設(shè)計與實現(xiàn)[J] .計算機工程,2007,33(15):252-254.
[2] 韓雙旺,王心源,李德錄.利用緩存優(yōu)化基于ASP.NET 的Web GIS 性能[J].微計算機信息,2006,22(8):152-155.
[3] 王 星,潘 郁.基于AJAX技術(shù)的Web模型在網(wǎng)站開發(fā)中的應(yīng)用研究[J] .微計算機信息,2006,22(9):206-207.
[4] 賀 琛,陳肇雄,黃河燕.Web 緩存技術(shù)綜述[J].小型微型計算機系統(tǒng),2004,25(5):836-842.
[5] 邵麗萍,肖世德.新一代Web開發(fā)技術(shù)ASP.NET的發(fā)展與探析[J].微計算機信息,2005(1):190-192.