2011年10月14日 星期五

ADO.NET是什麼

在學習ASP.NET的過程裡,dnowba自已覺得有些人太關注控制項的使用而忽略了一些重要的基礎,dnowba以前也只買ASP.NET的書籍…跟著書中的範例實作然後馬上就可以看到成果,還真的蠻爽的,但等到要設計大型的網站後,才漸漸覺得資料庫的設計才是根本,甚至我要說,資料庫設計才是精華,所以後來也買了SQL設計的相關書籍…這邊要介紹的不是這二個,而是中繼於ASP.NET和SQL資料庫之間的好幫手…ADO.NET

ADO.NET,扮演著應用程式與資料庫之間的溝通介面,是在典型的三層式資料庫應用程式架構中加入新的元件。其架構如下圖
image

典型的三層式資料庫應用程式架構(資料處理),如下圖,包含了連接介面、資料存取、操作管理三大區塊。
image

而這三個區塊也是ADO.NET的範疇:

  1. 連接介面:透過DbConnection物件,物件裡提供伺服器位置、資料庫名稱、資料庫角色…等連結條件建立與資料庫的連接。
  2. 資料存取:透過DbCommand物件,存取資料庫資料,DbCommand就是一些命令句,可以用命令來挑選資料庫中特定的資料。和典型資料處理不同的地方,在於ADO.NET將「存」和「取」做一個分別,存取的方式依使用目的分為:
    • 如果只要從資料庫「讀」資料不要修改(唯讀),那麼透過DbCommand把資料庫的資料放到DataReader物件中暫存。
    • 如果我要的功能,不只是「讀」,還要新增資料、更新資料。那麼還要把暫存在DataReader的資料進一步的經過DbDataAdapter物件中。
  3. 操作管理:在ADO.NET裡,存取間利用DbDataAdapter這個僑接器來適時的連接資料(篩選/新增/更新/刪除),DataSet物件就是操作管理的物件,DataSet裡可以擁有很多的DataTable,而每一個DataTable都有自已的Constraints集合,用來記錄如DataRow、DataColumn、DataView、DataRelation

在這裡ADO.NET優於典型的資料庫應用程式的地方,在於解決資料庫和其應用程式之間資源被佔用的問題。而使用者透過以ADO.NET作為中繼的web平台,也可以相對提昇存取效率。

另外一個值得一提的地方是,資料庫的品牌眾多,如My SQL、MS SQL,以往一個資料庫可能要換另一個資料庫應用程式的軟體,現在ADO.NET已經為不同的資料庫「內建」不同的物件。以下是各家廠商各自的Data Provider。最上圖ADO.NET架構圖中,.NET Framework Data Provider是屬於Data Provider的範圍。而DataSet物件是ADO.NET自已的範圍,換句話說,不管我們存取哪一種資料庫,在資料庫應用程式裡所使用的方法都是一樣的。  (至於怎麼連接不同類型資料來源…恩,dnowba還沒研究到這麼深入,這種高深的底層API,留給高手去解釋吧)

資料庫 DbConnection DbCommand DbDataAdapter
ODBC OdbcConnection OdbcCommand OdbcDataAdapter
DLE DB OleDbConnection OleDbCommand OleDbDataAdapter
SQL SqlConnection SqlCommand SqlDataAdapter
ORACLE OraceConnection OraceCommand OraceDataAdapter
MySQL MySqlConnection MySqlCommand MySqlDataAdapter


再補充一下:資料庫系統架構有三種

  1. 單層式(One-Tier):資料庫和應用程式都在本地端的電腦上。使用者是直接操作資料庫來處理資料。單機式的軟體就是這種方式建置。
    image
  2. 雙層式( Two-Tier):採用主從式(Client-Server)架構,Client指的是PC或終端機,Server指的是資料庫伺服器(Database Server)
    image
  3. 三層式( Three-Tier):三層式資料庫系統,是由雙層式架構擴充而來,它是在原來的主從端間加入一個應用程式伺服器(Application Server, AS)
    image

不過現在的資料庫架構不再是這麼簡單了,雲端式的架構有種mushup(混搭式)的感覺,使用者可自行決定要運行的平台。也就是說本機上也有操作介面、也有資料庫(通常是xml);如果你要同步的話,那麼操作介面可以到web 2.0上的網頁介面上做,而資料也會被送上雲端的資料庫。這也是我選擇用Visual Studio做開發工具的原因,又可以做單機版、又可以做web版,所用的都是Framework提供的資源庫…

官方的參考文件
http://msdn.microsoft.com/zh-tw/library/27y4ybxw.aspx

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...
// Dnow Function