RSS

ADO.NET – Bài 1 : Giới thiệu

19 Feb

1) Giới thiệu chung.
2) So sánh với phiên bản ADO .
3) Kiến trúc của ADO.NET
4) Sử dụng ADO.NET trong Visual Basic .NET
5) Ý nghĩa của việc xử lý dữ liệu ngắt kết nối trong ứng dụng web.


1) Giới thiệu chung

ADO.NET là một phần của .NET Framework, nó được xem là “bộ thư viện lớp” chịu trách nhiệm xử lý dữ liệu trong ngôn ngữ MS.NET. 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.

2) So sánh với phiên bản ADO

Trước ADO.NET, Microsoft đã có ADO là một bộ thư viện để xử lý các thao tác liên quan đến dữ liệu. ADO có tính linh hoạt, dễ sử dụng và được tích hợp trong các ngôn ngữ như Visual Basic, ASP 3.0.
Có thể coi ADO.NET là một thế hệ tiếp theo của ADO. ADO.NET kế thừa tất cả những ưu điểm của ADO, đồng thời với ý tưởng thiết kế hoàn toàn mới ADO.NET có một diện mạo khác hẳn so với tiền thân của nó. Một vài đặc điểm nổi bật của ADO.NET mà ADO không có như sau:
– ADO.NET được thiết kế hoàn toàn dựa vào XML vì XML là chuẩn trao đổi dữ liệu tiến bộ và tốt nhất trên môi trường Internet hiện nay.
– 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.
2 đặc điểm trên là 2 đặc điểm cơ bản, và nổi trội của ADO.NET mà ADOkhông có. Bây giờ chúng ta sẽ so sánh chi tiết hơn về từng khía cạnh của ADO và ADO.NET.

Đặc điểm ADO ADO.NET

Dữ liệu xử lý được đưa vào bộ nhớ dưới dạng

Recordset : tương đương 1 bảng dữ liệu trong database

Dataset : tương đương 1 database

Duyệt dữ liệu

Recordset chỉ cho phép duyệt tuần tự, từng dòng một.

Dataset : cho phép duyệt “tự do, ngẫu nhiên”, truy cập thẳng tới bảng ,dòng ,cột mong muốn.

Dữ liệu ngắt kết nối

Recordset cũng có thể ngắt kết nối nhưng tư tưởng thiết kế ban đầu của Recordset là hướng kết nối, do đó việc ngắt kết nối cũng không được hỗ trợ tốt nhất.

Dataset được thiết kế với tư tưởng ban đầu là “ngắt kết nối” à hỗ trợ mạnh mẽ “ngắt kết nối”.

Khả năng vượt tường lửa

Khi trao đổi dữ liệu với ADO qua Internet, thường sử dụng chuẩn COM, chuẩn COM rất khó vượt qua được tường lửa. Do vậy khả năng trao đổi dữ liệu ADO qua Internet thường có nhiều hạn chế.

ADO.NET trao đổi dữ liệu qua Internet rất dễ dàng vì ADO.NET được thiết kế theo chuẩn XML, là chuẩn dữ liệu chính được sử dụng để trao đổi trên Internet.

3) Kiến trúc ADO.NET

Kiến trúc ADO.NET có 2 phần :
– Phần kết nối : 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” : 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ế.

4) Sử dụng ADO.NET trong C#.NET
– Để sử dụng ADO.NET trong C#, ta phải khai báo imports các namespace sau đây :

Namespace Sử dụng Ghi chú

System.Data

Chứa tất cả lớp cơ sở của kiến trúc ADO.NET.

System.Data.Common

Chứa các lớp chia sẻ của .NET Data Providers.

System.Data.SqlClient

Chứa các lớp hỗ trợ hệ quản trị cơ sở dữ liệu MS SQL Server phiên bản 7.0 trở lên.

System.Data.SqlOleDb

Chứa các lớp hỗ trợ cho cở sở dữ liệu OLEDB vd Access, Oracle hay MS SQL Server phiên bản 6.5 trở về trước.

System.Data.Sqltypes

Cung cấp các lớp hỗ trợ thao tác trên các kiểu dữ liệu cơ bản của SQL Server.

5) Ý nghĩa của việc xử lý dữ liệu ngắt kết nối trong ứng dụng Web


– Ứng dụng web là những ứng dụng có rất nhiều người dùng. Tại một thời điểm có thể có hàng vạn người dùng truy cập vào web. Chính vì vậy, rất dễ xảy ra tình trạng quá tải, dễ làm cho server bị tổn hại. Việc xử lý ngắt kết nối có ý nghĩa giảm thiểu số người dùng truy cập 1 lượt vào Web. Tất là khi 1 người truy cập vào Website, các dữ liệu mà anh ta cần sẽ được lấy xuống sau đó không kết nối vào Database Server nữa sau đó thực hiện các thao tác dữ liệu.
– Tuy nhiên mặt trái của việc này cũng có là Web Server cũng sẽ phải xử lý một lượng dữ liệu khá lớn trong bộ nhớ. Như vậy, ta có thể giảm thiểu việc truy cập vào database nhưng Web Server lại phải xử lý nhiều hơn.
– Chính vì lý do được/mất như trên mà xử lý ngắt kết nối phải vô cùng khéo léo trong ứng dụng web. Ta chỉ nên xử lý ngắt kết nối cho những dữ liệu chung thường dùng, ít thay đổi mà thôi. Không nên quá lạm dụng. Vì tất cả những vấn đề đều có mặt trái của nó.

Tham khảo và chỉnh sửa từ: http://tranphuochung.wordpress.com

 
 

Gửi phản hồ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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

 
%d bloggers like this: