亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于.NET框架數(shù)據(jù)庫(kù)的訪問(wèn)技術(shù)的優(yōu)化

        2007-12-31 00:00:00傅志輝鄔偉娥
        計(jì)算機(jī)時(shí)代 2007年8期

        摘要:在構(gòu)建和開(kāi)發(fā)基于數(shù)據(jù)庫(kù)的應(yīng)用時(shí),如何提高應(yīng)用程序?qū)?shù)據(jù)庫(kù)的訪問(wèn)效率和消除性能瓶頸是一個(gè)關(guān)鍵問(wèn)題。文章簡(jiǎn)要介紹了.NET框架下ADO.NET的體系結(jié)構(gòu);分析了在傳統(tǒng)情況下,采用數(shù)據(jù)集方式對(duì)數(shù)據(jù)進(jìn)行讀取、插入、刪除以及更新操作存在的局限性;進(jìn)而提出了一種性能優(yōu)化的思路和方法:創(chuàng)建一個(gè)通用類(lèi),通過(guò)調(diào)用這個(gè)類(lèi)去實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的讀取和操作。文章以Asp.net(c#)和SQL數(shù)據(jù)庫(kù)為開(kāi)發(fā)平臺(tái),用實(shí)際項(xiàng)目中的部分代碼驗(yàn)證了改進(jìn)數(shù)據(jù)訪問(wèn)模式后,更能夠提高項(xiàng)目的開(kāi)發(fā)效率以及數(shù)據(jù)庫(kù)訪問(wèn)效率的目的。

        關(guān)鍵詞:ADO.NET;數(shù)據(jù)庫(kù);性能優(yōu)化;類(lèi);SQL

        0 引言

        互聯(lián)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,使得人們已不再滿(mǎn)足簡(jiǎn)單的通過(guò)Web來(lái)瀏覽和發(fā)布靜態(tài)信息,更多的依賴(lài)于Web的應(yīng)用需求應(yīng)運(yùn)而生。對(duì)于過(guò)去的眾多基于共享式的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),用戶(hù)也希望能將其移植到WWW上。隨著數(shù)據(jù)庫(kù)應(yīng)用的擴(kuò)展和深入,其數(shù)量和規(guī)模越來(lái)越大,因此對(duì)數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的要求也就越來(lái)越高。有鑒于此,本文主要探討和研究了在Web方式下,提高項(xiàng)目的開(kāi)發(fā)效率以及數(shù)據(jù)庫(kù)訪問(wèn)效率的途徑。

        1 現(xiàn)狀

        在Web方式下,Web客戶(hù)端是一臺(tái)只需要安裝Web瀏覽器的客戶(hù)機(jī),Web服務(wù)器安裝的是基于超文本標(biāo)記語(yǔ)言(HTML,Hypertext Markup Language)的服務(wù)器軟件。數(shù)據(jù)應(yīng)用程序駐留在Web服務(wù)器上,最終用戶(hù)通過(guò)Web瀏覽器生成大量的數(shù)據(jù)庫(kù)應(yīng)用程序。瀏覽器借助超文本傳輸協(xié)議(HTTP,HypertextTransfer Protocol)協(xié)議,通過(guò)Internet與Web服務(wù)器通信。軟件系統(tǒng)體系結(jié)構(gòu)為瀏覽器/服務(wù)器結(jié)構(gòu)(Browser/Server,即B/S結(jié)構(gòu)),瀏覽器通過(guò)Web服務(wù)器同數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互。用戶(hù)界面完全通過(guò)WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂3層結(jié)構(gòu)(即數(shù)據(jù)層、中間層和表示層)。B/S結(jié)構(gòu),主要是利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種Script語(yǔ)言(VBScript、JavaScfipt…)和ActiveX技術(shù),用通用瀏覽器就實(shí)現(xiàn)了原來(lái)需要復(fù)雜專(zhuān)用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開(kāi)發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。隨著Windows 2000/XP將瀏覽器技術(shù)植入操作系統(tǒng)內(nèi)部,這種結(jié)構(gòu)更成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu)(參見(jiàn)圖1)。

        如圖1所示,中間件(Middle Ware)負(fù)責(zé)管理Web服務(wù)器和數(shù)據(jù)庫(kù)之間的通信并提供應(yīng)用程序服務(wù),它能直接調(diào)用外部程序或腳本代碼來(lái)訪問(wèn)數(shù)據(jù)庫(kù),提供與數(shù)據(jù)庫(kù)相結(jié)合的動(dòng)態(tài)HTML頁(yè)面,然后通過(guò)Web服務(wù)器返回給用戶(hù)瀏覽器。數(shù)據(jù)庫(kù)服務(wù)器負(fù)責(zé)管理駐留在數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)。

        由于數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)發(fā)展得非???,從ODBC,JDBC,OLE DB到ADO,隨著Web交互性的日益提高和應(yīng)用的日益廣泛,對(duì)于中間層的需求也越來(lái)越突出。中間層是一個(gè)邏輯層,數(shù)據(jù)訪問(wèn)組件通常就在這一層上,而數(shù)據(jù)訪問(wèn)組件是惟一有必要了解數(shù)據(jù)庫(kù)細(xì)節(jié)的代碼。實(shí)現(xiàn)這些要求,ADO技術(shù)是一個(gè)理想的選擇。

        但是隨著應(yīng)用程序開(kāi)發(fā)技術(shù)的發(fā)展,Web應(yīng)用程序模型越來(lái)越松散地耦合:采用可擴(kuò)展標(biāo)記語(yǔ)言(XML,ExtensibleMarkup Language),將數(shù)據(jù)編碼并在網(wǎng)絡(luò)連接間傳遞;數(shù)據(jù)庫(kù)連接通常都是斷開(kāi)的;Web應(yīng)用程序使用HTTP在層間進(jìn)行通信,必須顯式地處理請(qǐng)求之間的狀態(tài)維護(hù)等。這些特點(diǎn)使得基于組件對(duì)象模型(COM,Component Object Model)的ADO很難在一個(gè)分布式、異種平臺(tái)構(gòu)成的環(huán)境中使用記錄集,對(duì)Internet上的高度分布式環(huán)境來(lái)說(shuō)它更顯得有些煩瑣或不合適。而微軟的NET架構(gòu)下的ADO.NET技術(shù)正好滿(mǎn)足這一切。

        2 ADO.NET體系結(jié)構(gòu)

        .NET框架是微軟公司推出的一個(gè)基于XML技術(shù)的開(kāi)發(fā)分布式應(yīng)用的平臺(tái)。在NET框架中,ADO.NET是ASP.NET和Windows Forms應(yīng)用訪問(wèn)各種數(shù)據(jù)(如RDBMS,XML文檔)的標(biāo)準(zhǔn)服務(wù),可以使用ADO.NET訪問(wèn)各種不同類(lèi)型的數(shù)據(jù)源。

        ADO.NET支持不同的開(kāi)發(fā)需求,例如前端數(shù)據(jù)庫(kù)客戶(hù)和由應(yīng)用程序、工具、語(yǔ)言或Internet瀏覽器使用的中間商業(yè)對(duì)象等。ADO.NET提供對(duì)Microsoft SQL Server等數(shù)據(jù)源以及通過(guò)OLE DB和XML公開(kāi)的數(shù)據(jù)源的一致訪問(wèn)。數(shù)據(jù)共享使用者應(yīng)用程序可以使用ADO.NET來(lái)連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。

        ADO.NET將數(shù)據(jù)訪問(wèn)分解為多個(gè)可以單獨(dú)使用或一前一后使用的不連續(xù)組件。ADO.NET包含用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果的.NET Framework數(shù)據(jù)提供程序,可以直接處理檢索到的結(jié)果,或?qū)⑵浞湃階DO.NET DataSet對(duì)象,以便與來(lái)自多個(gè)源的數(shù)據(jù)或在層之間進(jìn)行遠(yuǎn)程處理的數(shù)據(jù)組合在一起,以特殊方式向用戶(hù)公開(kāi)。ADO.NET的DataSet對(duì)象也可以獨(dú)立于.NET Framework供程序使用,以管理應(yīng)用程序的本地?cái)?shù)據(jù)或源自XML的數(shù)據(jù)。

        設(shè)計(jì)ADO.NET的目的一是為了滿(mǎn)足以下這一新編程模型的要求:具有斷開(kāi)式數(shù)據(jù)結(jié)構(gòu);能夠與XML緊密集成;具有能夠組合來(lái)自多個(gè)不同數(shù)據(jù)源的數(shù)據(jù)的通用數(shù)據(jù)表示形式;以及具有為與數(shù)據(jù)庫(kù)交互而優(yōu)化的功能。二是為了從數(shù)據(jù)操作中分解出數(shù)據(jù)訪問(wèn)。通過(guò)ADO.NET的兩個(gè)核心組件來(lái)完成此任務(wù):DamSet和.NET Framework數(shù)據(jù)提供程序,后者是一組包括Connection,Command,DataReader和DataAdapter對(duì)象在內(nèi)的組件。ADO.NET結(jié)構(gòu)如圖2所示。

        Dataset是ADO.NET的斷開(kāi)式結(jié)構(gòu)的核心組件,是為了實(shí)現(xiàn)獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問(wèn)而設(shè)計(jì)的。因此,它可以用于多種不同的數(shù)據(jù)源,用于XML數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DamSet包含一個(gè)或多個(gè)DataTable對(duì)象的集合,這些對(duì)象由數(shù)據(jù)行和數(shù)據(jù)列以及主鍵、外鍵、約束和有關(guān)DataTable對(duì)象中數(shù)據(jù)的關(guān)系信息組成。

        ADO.NET結(jié)構(gòu)的另一個(gè)核心元素是.NET Framework數(shù)據(jù)提供程序,它是為了實(shí)現(xiàn)數(shù)據(jù)操作和對(duì)數(shù)據(jù)的快速、只進(jìn)、只讀訪問(wèn)而設(shè)計(jì)的。Connection對(duì)象提供與數(shù)據(jù)源的連接;Command對(duì)象使用戶(hù)能夠訪問(wèn)用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過(guò)程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令;DataReader從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流;DataAdapter提供連接DataSet對(duì)象和數(shù)據(jù)源的橋梁。DataAdapter使用Command對(duì)象在數(shù)據(jù)源中執(zhí)行SQL命令,以便將數(shù)據(jù)加載到DataSet中,并使對(duì)DataSet中數(shù)據(jù)的更改與數(shù)據(jù)源保持一致。

        .NET Framework提供了四個(gè).NET Framework數(shù)據(jù)提供程序:SQLServer.NET Framework數(shù)據(jù)提供程序、OLE DB.NETFramework數(shù)據(jù)提供程序、ODBC.NET Framework數(shù)據(jù)提供程序和Oracle.NET Framework數(shù)據(jù)提供程序??梢詾槿魏螖?shù)據(jù)源編寫(xiě).NET Framework數(shù)據(jù)提供程序。

        3 傳統(tǒng)數(shù)據(jù)庫(kù)存取模式

        作為Microsoft.NET平臺(tái)的一部分,ASP.NET提供了最簡(jiǎn)便、最具有擴(kuò)展能力的方式來(lái)開(kāi)發(fā)、部署和運(yùn)行可以將任何瀏覽器或設(shè)備作為目標(biāo)的Web應(yīng)用程序。其中,它對(duì)數(shù)據(jù)庫(kù)操作是通過(guò)數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)ADO.NET實(shí)現(xiàn)的。利用ADO.NET提供的組件,可以方便地進(jìn)行數(shù)據(jù)庫(kù)的存取。

        一般在ASPNET中對(duì)數(shù)據(jù)表的操作流程為:先聲明表的結(jié)構(gòu),建立數(shù)據(jù)表,然后為每個(gè)數(shù)據(jù)表建立一個(gè)類(lèi),定義各種數(shù)據(jù)庫(kù)操作函數(shù),在應(yīng)用程序中如果要對(duì)該表操作,則調(diào)用該類(lèi)中增、刪、改的操作。在這種傳統(tǒng)的數(shù)據(jù)訪問(wèn)模式下的數(shù)據(jù)庫(kù)操作框架圖詳見(jiàn)圖3。

        如圖3所示,一個(gè)數(shù)據(jù)集中有一個(gè)數(shù)據(jù)表的集合。每一個(gè)表在程序中都要給出聲明,并給該表添加數(shù)據(jù)項(xiàng)及其類(lèi)型;然后對(duì)該表建立存儲(chǔ)過(guò)程,編寫(xiě)增加、刪除和修改函數(shù);建立存儲(chǔ)過(guò)程,仍然需要對(duì)該表的每個(gè)數(shù)據(jù)項(xiàng)聲明一個(gè)參數(shù),并注明參數(shù)類(lèi)型和長(zhǎng)度。由此可見(jiàn),這樣的操作雖然結(jié)構(gòu)比較清晰,但是增加了開(kāi)發(fā)的工作量,而且不利于程序的維護(hù),如果表的結(jié)構(gòu)出現(xiàn)變動(dòng),則相關(guān)的多處需要被修改。

        4 改進(jìn)數(shù)據(jù)訪問(wèn)模式

        與傳統(tǒng)的方法不同,新的設(shè)計(jì)不是為每個(gè)表建立一個(gè)類(lèi),而是編寫(xiě)一個(gè)通用的類(lèi)來(lái)完成所有表的基本操作。改進(jìn)的數(shù)據(jù)訪問(wèn)模式下的基本實(shí)現(xiàn)框架圖如圖4所示。

        在圖4改進(jìn)的數(shù)據(jù)訪問(wèn)模式中,給項(xiàng)目添加了一個(gè)組件類(lèi),在類(lèi)中編寫(xiě)公用函數(shù)代碼分別實(shí)現(xiàn)添加、更新、顯示數(shù)據(jù)庫(kù)中的單表數(shù)據(jù)。本文以asp.net(C#)和SQL SERVER 2000為開(kāi)發(fā)平臺(tái)。以插入數(shù)據(jù)為例,下面將分別給出這些函數(shù)設(shè)計(jì)的部分代碼:

        精精国产xxx在线视频app| 久久精品国产亚洲av香蕉| 国产熟女白浆精品视频二| 无码毛片内射白浆视频| 久久露脸国产精品| 亚洲午夜无码久久yy6080| 国产三级av在线播放| 精品少妇一区二区三区入口| 9久久婷婷国产综合精品性色| 亚洲日韩欧美一区、二区| 精品一区二区三区在线观看| 久久精品国产热| 精品国产麻豆一区二区三区| 国产精品自拍视频在线| 无码国产精品一区二区免费式芒果| 亚洲成在人线在线播放无码| 欧美黑人又粗又大久久久| 国产自产21区激情综合一区| 亚洲一区二区三区偷拍厕所| 视频一区视频二区制服丝袜| 久青草久青草视频在线观看| 97中文字幕在线观看| 国产成人精品蜜芽视频| 一本之道日本熟妇人妻| 99精品国产一区二区三区不卡| japanese无码中文字幕| 国产91对白在线观看| 东风日产系列全部车型| 性感女教师在线免费观看| 国产成人精品无码一区二区老年人| 日韩人妻精品无码一区二区三区| 日韩高清毛片| 国产白浆流出一区二区| 国产福利一区二区三区在线视频| 国产精品vⅰdeoxxxx国产| 国产成人亚洲不卡在线观看| 一级做a爱视频在线播放| 视频在线观看一区二区三区| 风间由美性色一区二区三区| 国产午夜精品久久久久九九| 久久精品国产亚洲av夜夜|