講述ADO.NET架構(gòu)和ADO的差異有關(guān)文章
雖然有許多人對(duì)ADO.NET架構(gòu)的安全性表示懷疑,但在年復(fù)一年的不斷發(fā)展中,他的安全性也在不斷提高。保障ADO.NET架構(gòu)的安全性是完全有可能的,但前提是要深入理解到底什么是ADO.NET架構(gòu),及他是怎么運(yùn)作的。
ADO.NET架構(gòu)可以讓.NET上的任何程式語(yǔ)言能夠連接並存取關(guān)聯(lián)式資料庫(kù)與非資料庫(kù)型資料來(lái)源(例如 XML,Excel或是文字檔資料),或是獨(dú)立出來(lái)作為處理應(yīng)用程式資料的類(lèi)別物件,其在.NET Framework中的地位是舉足輕重,許多人將ADO.NET視為ADO的下一個(gè)版本,但其實(shí)它是一個(gè)全新的架構(gòu)、產(chǎn)品與概念。
ADO.NET架構(gòu)
ADO.NET架構(gòu)(object model)有五個(gè)主要的對(duì)象,分別是Connection對(duì)象,Command對(duì)象,DataAdpter對(duì)象,Dataset對(duì)象以及 DataReader對(duì)象.這些對(duì)象中負(fù)責(zé)建立連線和數(shù)據(jù)操作的部分我們稱(chēng)為‘?dāng)?shù)據(jù)操作對(duì)象’(Managed Provider),分別由Connection對(duì)象,Command對(duì)象,DataAdpter對(duì)象以及DataReader對(duì)象所組成。數(shù)據(jù)操作對(duì)象 最主要是當(dāng)作Dataset對(duì)象以及數(shù)據(jù)源之間的橋梁,負(fù)責(zé)將數(shù)據(jù)源中的數(shù)據(jù)取出後存入Dataset對(duì)象中管理,以及將數(shù)據(jù)存回?cái)?shù)據(jù)源的工作。
Connection對(duì)象 : 可以開(kāi)啟程式和數(shù)據(jù)源之間的連接。沒(méi)有利用connection對(duì)象將數(shù)據(jù)源打開(kāi),則無(wú)法從數(shù)據(jù)源中取得數(shù)據(jù)。 Command對(duì)象: 用來(lái)對(duì)數(shù)據(jù)源發(fā)出指令,如對(duì)數(shù)據(jù)源下達(dá)查詢(xún),新增,修改,刪除數(shù)據(jù)等指令。#t#
DataAdpter對(duì)象: 主要是在數(shù)據(jù)源以及Dataset之間執(zhí)行資料傳輸?shù)墓ぷ鳎梢酝高^(guò)command下達(dá)命令后,將取得的資料存入dataset中管理。 Dataset對(duì)象: 可以視作一個(gè)緩沖區(qū)(cache),可以把從數(shù)據(jù)源中所查詢(xún)得到的資料保留起來(lái),甚至可以將整個(gè)數(shù)據(jù)源內(nèi)的資料顯示出來(lái)。ADO.NET架構(gòu)不但可以?xún)?chǔ)存多個(gè)table,還可以透過(guò)DataAdpter對(duì)象取得一些如主鍵等的數(shù)據(jù)表結(jié)構(gòu),并可以記錄表間的關(guān)聯(lián)。
DataReader 對(duì)象: 若只需要循序讀取數(shù)據(jù)源中的資料而不需要其他操作,ADO.NET架構(gòu)可以使用DataReader對(duì)象。DataReader對(duì)象讀取是一次一筆,向下循序讀取數(shù)據(jù)源中的 資料,而且被DataReader對(duì)象所趨會(huì)的數(shù)據(jù)是唯讀的(read only),并不允許作其他操作。
各部件之間的關(guān)系如圖下圖所示:

ADO.NET架構(gòu)和ADO的差異
對(duì)於 ADO 的開(kāi)發(fā)人員來(lái)說(shuō),最明顯的變化在於以往 ADO 中的 Recordset 消失了,並且明確的分開(kāi)為連線型的 DataReader 以及離線型的 DataSet 與 DataTable,並且發(fā)展支援離線型資料來(lái)源的瀏覽工具 DataView, 這樣的改變,讓習(xí)慣使用 ADO 的 VB/ASP 開(kāi)發(fā)人員會(huì)有某種程度的不習(xí)慣,同時(shí)讓ADO.NET架構(gòu)的學(xué)習(xí)會(huì)較 ADO 有較些許的複雜性,因此有部分新入門(mén)或是VB 6.0/ASP開(kāi)發(fā)人員會(huì)在學(xué)習(xí).NET Framework或是使用VB.NET開(kāi)發(fā)應(yīng)用程式時(shí),在 .NET Framework 中使用 ADO 來(lái)連接資料來(lái)源。但在 .NET Framework 應(yīng)用程式使用 ADO.NET架構(gòu)的話,.NET Framework會(huì)因?yàn)橐嘁粚覥OM和.NET資料之間的轉(zhuǎn)換,會(huì)讓?xiě)?yīng)用程式效能有少部分的損耗。

















