吳 楊,孫 蔚
(陜西工業(yè)職業(yè)技術(shù)學院信息工程學院,咸陽,712000)
隨著Internet 技術(shù)的發(fā)展,使得瀏覽器成為展現(xiàn)信息的主要平臺之一,通過瀏覽器展示數(shù)據(jù)的平臺稱之為B/S(Browser/Server)結(jié)構(gòu)。該結(jié)構(gòu)是建立在C/S 結(jié)構(gòu)之上的,同時也是對C/S 結(jié)構(gòu)的一種改進及變化,實質(zhì)上是一種三層C/S 結(jié)構(gòu)。在該體系當中,用戶僅僅需要利用瀏覽器向網(wǎng)絡上的web 服務器發(fā)出請求,接受相關(guān)請求,其詳細步驟如下如1所示。B/S 結(jié)構(gòu)與C/S 結(jié)構(gòu)相比較,具有以下幾方面優(yōu)勢:部署方便,維護容易;通過http 協(xié)議訪問Web 服務器,容易通過防火墻,因此配置難度較低。
ADO.NET 來源于ADO(ActiveX Data Objects),提供平臺互用性及可收縮的數(shù)據(jù)訪問,也增強了對非連接編程模式的支持,還支持RICH XML;允許與不同類型的數(shù)據(jù)源及數(shù)據(jù)庫進行交互;是一組用于與數(shù)據(jù)源進行交互的面向?qū)ο蟮念悗臁S脩襞c數(shù)據(jù)庫系統(tǒng)的交互過程則是:第一步,用戶通過用戶界面面向系統(tǒng)進而發(fā)出數(shù)據(jù)操作的請求,而用戶界面在接受數(shù)據(jù)請求后傳到ADO.NET;第二步,ADO.NET 分析用戶所傳來的數(shù)據(jù),通過數(shù)據(jù)庫訪問接口實現(xiàn)數(shù)據(jù)源的交互,向數(shù)據(jù)源發(fā)送SQL 指令;第三步,ADO.NET 就會將所獲取的訪問結(jié)果最終傳向用戶界面。
ADO.NET 可將組件分為兩大類,一類是數(shù)據(jù)操作,另一類是數(shù)據(jù)存取。數(shù)據(jù)的操作及存取則主要是通過數(shù)據(jù)提供程序及數(shù)據(jù)集共同完成的。數(shù)據(jù)提供程序(Data Provider)則包括Data Reader、Connection 及DataAdapter,通過這些組件進而實現(xiàn)數(shù)據(jù)的存取,所提供的程序分為一般數(shù)據(jù)提供程序及SQL Server 數(shù)據(jù)提供程序;數(shù)據(jù)集表示一種實際的數(shù)據(jù),而該種數(shù)據(jù)則是用來連接數(shù)據(jù)庫及執(zhí)行命令的。
根據(jù)不同的數(shù)據(jù)訪問需求,進而在B/S 模式下設(shè)計兩種連接數(shù)據(jù)庫的方式,一種是連接模式,另一種是斷開模式。
其一,連接模式下的數(shù)據(jù)庫訪問技術(shù)。所謂連接模式是指對數(shù)據(jù)的讀取及操作均在斷開數(shù)據(jù)庫連接之前進行操作,通過DataReader 對象來實現(xiàn)。利用DataReader 對數(shù)據(jù)庫中的只讀及只進的數(shù)據(jù)流,其查詢結(jié)果在查詢執(zhí)行正在進行時返回,并將其存儲到客戶端的網(wǎng)絡緩沖區(qū)中。通過利用DataReader可提高應用程序的性能,究其原因在于該種模式可對數(shù)據(jù)立即進行檢索,同時只在內(nèi)存中占用一行,這樣一來,就相應的減少了占用內(nèi)存空間量,如下圖2 所示。
其二,斷開模式下的數(shù)據(jù)庫訪問技術(shù)。該種模式是指對數(shù)據(jù)的讀取在斷開數(shù)據(jù)庫連接之前所進行的工作。而該種模式則是使用DataSet 以及DataAdapter 對象來實現(xiàn)的,利用DataAdapter 對象,進而向DataSet 中填充一定數(shù)據(jù)。在整個過程中DataAdapter 對象所扮演的是數(shù)據(jù)庫與DataSet 之間的橋梁。當DataAdapter 對象采用Fill 方法將所需要查詢的結(jié)果填充到DataSet 中,進而實現(xiàn)其離線處理。同時允許在DataSet 中進行改、修及刪等相關(guān)操作。其斷開模式訪問數(shù)據(jù)庫技術(shù)的原理如下圖3 所示:
首先,連接數(shù)據(jù)庫,利用ADO.NET 從數(shù)據(jù)庫中發(fā)送及檢索數(shù)據(jù),創(chuàng)建對數(shù)據(jù)庫的連接,一般情況下,針對不同的數(shù)據(jù)庫,通過創(chuàng)建相應的連接類來創(chuàng)建相關(guān)連接,實現(xiàn)性能的優(yōu)化。例如:如果訪問SQL Server 數(shù)據(jù)庫,則創(chuàng)建SqlConnection類,如果訪問Access 數(shù)據(jù)庫,則創(chuàng)建OleDbconnection 類。其次,操作數(shù)據(jù)庫。連接數(shù)據(jù)庫之后,就是操作數(shù)據(jù)庫(數(shù)據(jù)的查詢、修改及刪除等,相應的就是傳送SQL 指令)。對于數(shù)據(jù)庫的操作可采用多種方式來實現(xiàn),最為常用的對象就是SqlDataAdpater 對象、SqlComrsand 對象。最后,獲取數(shù)據(jù)集。數(shù)據(jù)集的獲取一般分為面向流及面向集的數(shù)據(jù)訪問,如果是輕量級的數(shù)據(jù)訪問,為了減輕應用服務器的壓力,應使用通過DataReader 數(shù)據(jù)對象。如果是離線數(shù)據(jù)訪問,則應使用DataSet 數(shù)據(jù)對象。此外,對于業(yè)務邏輯較為復雜的數(shù)據(jù)處理任務,可以考慮利用存儲過程來提高數(shù)據(jù)訪問的性能。
綜上所述,ADO.NET 可訪問關(guān)系數(shù)據(jù)、應用程序數(shù)據(jù)及XML 等,在B/S 模式下ADO.NET 數(shù)據(jù)庫訪問可通過兩種模式來進行訪問,一種是連接模式下的數(shù)據(jù)庫訪問,一種是斷開模式下的數(shù)據(jù)訪問。另外,可通過對存儲過程進行性能優(yōu)化。在今后的研究中,則需要對ADO.NET 技術(shù)進行進一步的探討,進而設(shè)計出一種方便、簡單及高效的訪問技術(shù)。
圖1 B/S 結(jié)構(gòu)模式
圖2 ADO.NET 數(shù)據(jù)庫訪問技術(shù)的連接模式
圖3 ADO.NET 數(shù)據(jù)庫訪問技術(shù)的斷開模式
[1]吳健,劉培奇,衛(wèi)尊義等.基于ASP.NET 的企業(yè)網(wǎng)絡信息系統(tǒng)的設(shè)計與實現(xiàn)[J].信息技術(shù),2013,(6):172-175.
[2]王平,賈化萍.C/S 和B/S 結(jié)合模式下應用系統(tǒng)的研究與開發(fā)[J].電腦與信息技術(shù),2006,14(1):50-53.
[3]孫仁鵬.ADO.NET 在多層模式下應用的研究[J].計算機工程與設(shè)計,2010,31(16):3621-3624.