Sơ lược về ADO.NET

Tài liệu tham khảo và tổng hợp từ Trung tâm Hưng Yên Aptech  http://www.aptech.utehy.vn/ và Trung tâm tin học Đại học KHTN TpHCM http://forum.t3h.vn/
Post lên đây như một cách chia sẻ cho các bạn, và cũng là để làm tài liệu cho mình những lúc cần 🙂

1. Giới thiệu chung về ADO.NET (ADO = ActiveX Data Object)

– ADO.NET là một tập các lớp nằm trong bộ thư viện lớp cơ sở của .NET Framework, cho phép các ứng dụng windows (như C#, VB.NET) hay ứng dụng web (như ASP.NET) thao tác dễ dàng với các nguồn dữ liệu.
– ADO.NET được thiết kế với dạng dữ liệu “ngắt kết nối”, nghĩa là chúng ta có thể lấy cả một cấu trúc phức tạp của dữ liệu từ database, sau đó ngắt kết nối với database rồi mới thực hiện các thao tác cần thiết. Đây là một sự tiến bộ về mặt thiết kế bởi vì thiết kế ADO trước đây luôn cần duy trì một kết nối trong quá trình thao tác dữ liệu.

– Mục tiêu chính của ADO.NET là:
+ Cung cấp các lớp để thao tác CSDL trong cả hai môi trường là phi kết nối (Disconected data) và kết nối (Connected data).
+ Tích hợp chặt chẽ với XML (Extensible Markup Language)
+ Tương tác với nhiều nguồn dữ liệu thông qua mô tả dữ liệu chung.
+ Tối ưu truy cập nguồn dữ liệu (OLE DB & SQL server).
+ Làm việc trên môi trường Internet (môi trường phi kết nối – Disconnected eviroment).

– Các lớp của ADO.NET được đặt trong Namespace là System.Data/ System.Data.oledb.
– ADO.NET bao gồm 2 Provider (2 bộ thư viện) (thường dùng) để thao tác với các CSDL là: OLE DB Provider (nằm trong System.Data.OLEDB) dùng để truy xuất đến bất kỳ CSDL nào có hỗ trợ OLEDB; SQL Provider (nằm trong System.Data.SQLClient) chuyên dùng để truy xuất đến CSDL SQL Server (Không qua OLE DB nên nhanh hơn).
– Vị trí của ADO.NET trong kiến trúc của .NET Framework

vuonghienuit.wordpress.com

Từ kiến trúc ta thấy rằng: ADO.NET là một thành phần nội tại của .NET framework, do vậy nó có thể được sử dụng trong tất cả các ngôn ngữ hỗ trợ .NET như C#, VB.NET… mà không có sự khác biệt nào (Tức là các chức năng cũng như cách sử dụng hoàn toàn giống nhau).

2. So sánh với ADO
– 2 mô hình lập trình tương tự nhau
– ADO.NET được thiết kế làm việc với cả dữ liệu phi kết nối trong môi trường đa tầng (Multi-Tier). Nó sử dụng XML để trao đổi dữ liệu phi kết nối, do vậy dễ dàng khi giao tiếp giữa các ứng dụng không phải trên nền windows.
– ADO.NET được thiết kế hoàn toàn hướng đối tượng : đây là đặc điểm chi phối toàn bộ các sản phẩm Microsoft .NET.
– ADO.NET là thành phần nội tại (có sẵn) trong .NET Framework, do vậy dễ dàng khi phát triển bằng nhiều ngôn ngữ khác nhau.
– ADO.NET Hỗ trợ XML hoàn toàn (ADO thì không), nghĩa là chúng ta có thể nạp dữ liệu từ một tệp XML và thao tác như một CSDL, sau đó cũng có thể lưu kết quả ngược trở lại tệp XML.
– ADO lưu trữ dữ liệu dưới dạng nhị phân nên có thể bị chặn bởi Firewall, còn ADO.NET lưu trữ dữ liệu dưới dạng XML nên có thể đi qua một cách dễ dàng.

3. Kiến trúc của ADO.NET
Kiến trúc ADO.NET có 2 phần
– Phần kết nối (Connected) : phần này sử dụng khi ta kết nối với Database và thao tác dữ liệu, yêu cầu phải thực hiện kết nối với Database khi đang thao tác. Các đối tượng của phần này là:

•Connection : Đối tượng quản lý đóng /mở kết nối tới Database.Có 2 dạng Connection tuỳ theo nguồn dữ liệu là gì (OleDb hay SQL Server) đó là OleDbConnection và SqlConnection.

•Command : Đối tượng thực hiện các câu lệnh tương tác truy vấn, rút trích dữ liệu từ database khi đã thiết lập kết nối tới dữ liệu và trả về kết quả. Tương tự như Connection, Command cũng có 2 dạng tuỳ theo nguồn dữ liệu là gì (OleDb hay SQL Server) đó là OleDbCommand và SqlCommand.

•DataReader : Đối tượng xử lý đọc dữ liệu, được thiết kế phù hợp cho các ứng dụng web. Chỉ Xử lý 1 dòng dữ liệu tại một thời điểm. Phù hợp với ứng dụng web vì xử lý nhanh, nhẹ không chiếm bộ nhớ. Cũng có 2 dạng tùy theo dữ liệu nguồn : OleDbDataReader và SqlDataReader. Dữ liệu của đối tượng được tạo ra khi đối tượng Command thực hiện câu lệnh ExecuteReader().

•DataAdapter : Đây là đối tượng rất quan trọng của ADO.NET, nó là cầu nối của database và dataset (dataset là đối tượng ngắt kết nối), bởi vì đối tượng “ngắt kết nối” dataset không thể liên lạc trực tiếp với database nên nó cần một đối tượng trung gian lấy dữ liệu từ database cho nó. Và đó chính là DataAdapter. Vì DataAdpater khi thao tác với Database vẫn phải duy trì kết nối nên nó được liệt kê vào dạng “kết nối”, nhưng bản chất là phục vụ cho việc “ngắt kết nối”.

– Phần “ngắt kết nối” (Disconnected) : chỉ có một đối tượng chịu trách nhiệm ngắt kết nối đó chính là DataSet. DataSet không cần biết gì về Database thuộc kiểu gì, kết nối ra sao. Nhiệm vụ của DataSet là nhận dữ liệu về từ DataAdapter và xử lý nó. DataSet có thể được xem như 1 Database trong bộ nhớ gồm tất cả các bảng ,quan hệ ….. DataSet có nhiều đối tượng được xem là “con” tức là cấp thấp hơn đi kèm với nó như : DataTable ( tương đương với 1 bảng trong database) , cấp thấp hơn của DataTable có các đối tượng DataRow (tương đương với 1 dòng) ,DataColumn( tương đương với 1 cột), DataRelation (tương đương với các quan hệ). Ngoài ra còn có các đối tượng nhóm : vd DataTableCollection, DataRowCollection, DataColumnCollection. Việc sử dụng DataSet là một tiến bộ lớn của kiến trúc ADO.NET tuy nhiên với các ứng dụng Web , việc sử dụng DataSet không được khuyến khích vì đối tượng DataSet được xem là quá lớn, nặng nề khó thích hợp cho đường truyền trên web vốn rất hạn chế.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s