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