華文學(xué)生計(jì)算機(jī)技能輔助系統(tǒng)中.NET程序技術(shù)
Web應(yīng)用程序是顯示數(shù)據(jù)庫中數(shù)據(jù)的一個非常好的方法,可以把業(yè)務(wù)復(fù)雜并有訪問規(guī)則和安全規(guī)則的數(shù)據(jù)庫數(shù)據(jù)以一種簡單、直觀的方式向用戶提供查詢和更新的功能。用戶判斷數(shù)據(jù)庫應(yīng)用程序很常用的一個標(biāo)準(zhǔn)就是處理數(shù)據(jù)的快慢。許多Web頁面都向用戶提供了多種可搜索的列表顯示來有效地定位記錄的位置,一個比較簡單而且常用的例子就是在線圖書查詢系統(tǒng),它允許用戶按作者、書名或者主題來檢索圖書信息。
ASP.NET提供了一個DataGrid控件,可以比ASP更方便地創(chuàng)建數(shù)據(jù)列表,DataGrid控件除了內(nèi)建的數(shù)據(jù)表現(xiàn)和方法之外,還允許用戶自己定義表現(xiàn)形式。分頁技術(shù)為用戶可管理的數(shù)據(jù)查找提供方便。DataGrid內(nèi)建的分頁技術(shù)很容易實(shí)現(xiàn),但數(shù)據(jù)量很大時,它的方便性是以犧牲性能為代價的。下面就看看如何通過自定義的分頁方法來快速處理大量數(shù)據(jù)的結(jié)果集。這里討論的方法比DataGrid的默認(rèn)分頁方法更加快速和有效,這是因?yàn)槊看握埱蟛恍枰讶康臄?shù)據(jù)結(jié)果發(fā)送到Web服務(wù)器,相反,它只需要發(fā)送每個頁面需要的那些數(shù)據(jù)集。例如:一個用戶只要求100個頁面中每頁顯示25條記錄的第4頁的結(jié)果集,服務(wù)器只需要發(fā)送第75~100行的數(shù)據(jù)即可,而不是1~100行的完全數(shù)據(jù)。默認(rèn)的傳送方式如圖2所示。本文引用地址:http://www.ex-cimer.com/article/202408.htm
從圖2中可以看出,DataGrid的內(nèi)建分頁方法效率不高,每次請求都必須把整個查詢結(jié)果發(fā)送給Web服務(wù)器,Web服務(wù)器再把數(shù)據(jù)分成相應(yīng)的頁面。利用DataGrid的內(nèi)建的分頁方法盡管很簡單,但是由于Web應(yīng)用的無序性特征,一個用戶每次從一個頁面轉(zhuǎn)向另外一個頁面時,DataGrid對象都被銷毀并重新創(chuàng)建,這就意味著數(shù)據(jù)庫服務(wù)器每次都必須發(fā)送全部的結(jié)果集。
自定義的分頁方法只返回所要檢索的那些結(jié)果集,如圖3所示。
從圖3可以看到,數(shù)據(jù)庫每次只需要返回所要顯示的數(shù)據(jù)記錄。利用AspNetPager分頁導(dǎo)航,再自定義分頁存儲過程,提高分頁效率。
一般來說使用存儲過程有以下優(yōu)點(diǎn):
(1)減少網(wǎng)絡(luò)數(shù)據(jù)傳遞流量,提高T-SQL語句執(zhí)行速度。用戶在使用到SQL語句時,如用戶進(jìn)行數(shù)據(jù)查詢,數(shù)據(jù)插入時首先要把相關(guān)的SQL語句發(fā)送到SqlServer,在進(jìn)行比較復(fù)雜的查詢等操作時就要頻繁向服務(wù)器發(fā)送這樣的SQL語句,浪費(fèi)網(wǎng)絡(luò)帶寬,效率低下且加重服務(wù)器的負(fù)擔(dān)。而存儲過程經(jīng)過編譯存放在服務(wù)器上,使用存儲過程要比單條SQL語句快得多。
(2)適合模塊化編程,提高系統(tǒng)的通用性,存儲過程在被創(chuàng)建以后,可以在程序中被多次調(diào)用而不用重復(fù)編寫SQL語句。
(3)可以更有效地管理用戶操作數(shù)據(jù)庫的權(quán)限,通過SqlServer分配權(quán)限更安全。
部分代碼如下:
CREATE procedure GetCiAll
( @pagesize int,
@pageindex int,
@docount bit )
as
set nocount on
if(@docount=1)
select count(id) from mingci
else
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select id from mingci
select*from mingci O,@indextable t where O.id=t.nid
and t.id>@PageLowerBound and t.id=
@PageUpper
Bound order by t.id
end
set nocount off
GO
對來華學(xué)習(xí)漢語的華文教育專業(yè)本科一年級的學(xué)生進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)總抽樣人數(shù)為20人,其中平時學(xué)習(xí)和測試中使用本系統(tǒng)的有10人,應(yīng)用傳統(tǒng)方式學(xué)習(xí)的有10人。經(jīng)過一個學(xué)期的學(xué)習(xí),學(xué)期末進(jìn)行測試,結(jié)果表明借助于輔助系統(tǒng)學(xué)習(xí)和測試的同學(xué)的計(jì)算機(jī)技能成績普遍好于未使用該系統(tǒng)的學(xué)生。
本文通過分析.NET技術(shù)的特點(diǎn)以及華文學(xué)生計(jì)算機(jī)技能的學(xué)習(xí)和測試的現(xiàn)狀, 發(fā)現(xiàn).NET技術(shù)非常適合于華文計(jì)算機(jī)技能輔助系統(tǒng)的建設(shè)。通過使用.NET自定義分頁技術(shù)應(yīng)用于華文學(xué)生計(jì)算機(jī)技能學(xué)習(xí)輔助系統(tǒng)減少了客戶端和服務(wù)器的數(shù)據(jù)交互量,減少了帶寬的占用。隨著中國華文教育及世界華文教育的發(fā)展,計(jì)算機(jī)輔助系統(tǒng)將成為課程教學(xué)和測試的主要輔助工具,.NET技術(shù)和學(xué)科的結(jié)合將更加緊密。
參考文獻(xiàn)
[1] 中國華文教育網(wǎng).http://www.hwjyw.com.
[2] 何克抗,許駿. IT 技能測評自動化[M].北京:科學(xué)出版社, 2005.
[3] GENEEN S. Computer assisted-assessment: staff viewpoints on its Introduction Within a New University [J]. Innovation Teching International,2002,39(2):145 - 153.
[4] 陳冠軍. 征服ASP. NET 2. 0 AJAX-開發(fā)技術(shù)詳解[M]. 北京:人民郵電出版社,2007.
[5] 馬軍.精通ASP.NET 2.0 網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)[M]. 北京:人民郵電出版社,2006.
評論