Cộng đồng chia sẻ tri thức Lib24.vn

1. Mô hình kết nối ứng dụng đến SQL server

Gửi bởi: Nguyễn Thị Thu Hiếu 18 tháng 2 2020 lúc 10:09:00


Mục lục
* * * * *

1.  Mô hình ADO

ADO là phương thức truy xuất dữ liệu cũ của Microsoft, và nó đã trở thành chuẩn cho các môi trường Office, Web, và Visual Basic trước .NET. Sau đây là các sản phẩm phát triển của ADO:

  • Microsoft Office 200x
  • Visual Studio 6.0 (bao gồm tất cả các ngôn ngữ trong đó)
  • SQL Server 7.0, 2000

Data Access Objects (DAO), là chuẩn trước ADO, được sử dụng trong Office và Visual Basic, nhưng nó không được thiết kế để sử dụng trong các môi trường Web như Visual InterDev và các dữ liệu servers khác. Do đó ADO cho đến bây giờ đang là chuẩn để phát triển các ứng dụng.

Các mô hình đối tượng ADO (ADO Object Models)

Đây là các mô hình đối tượng, mang ý nghĩa số nhiều. Không như DAO chỉ bao gồm một mô hình đối tượng (one object model), ADO được phân chia thành các mô hình đối tượng (object models).

Các mô hình đối tượng của ADO làm việc với nhau đưa ra các objects và các collections cần thiết để ta làm việc với dữ liệu. Trong ADO có cặp mô hình đối tượng:

  1. ActiveX Data Objects 2.7 (ADODB) cho phép ta tạo và làm việc với recordsets cũng như thực hiện quản lý lỗi.
  2. ADO Extensions 2.7 for DDL and Security (ADOX) là ngôn ngữ định nghĩa dữ liệu, cho phép ta làm việc và sửa đổi lược đồ CSDL (database schema) và bảo mật các đối tượng

Tuy nhiên, các đối tượng này sẽ được sử dụng kết hợp với nhau. Chẳng hạn, khi muốn sửa đổi cấu trúc một bảng thì ta cần thư viện ADOX, nhưng để nó hoạt động thì ta cần ADODB. Các ứng dụng thường làm việc với các bản ghi dữ liệu.

ActiveX Data Objects 2.7 (ADODB) Object Model

  Mô hình đối tượng ActiveX Data Objects ADO (Xem hình 5.1) bao gồm:  

Hình 5.1. Mô hình ADO
  • Đối tượng Connection. Tương tự như đối tượng Database trong DAO, đó là nơi mà tất cả các thao tác làm việc của ta với ADO được bắt đầu. Tất cả các objects và collections đều được đề cập sau đối tượng Connection.
  • Đối tượng Errors collection/Error. Giống như DAO errors collectionvà error object, nó cho phép phát triển để quản lý lỗi.
  • Đối tượng Command. Cho phép chạy truy vấn trên một database và trả lại các bản ghi trên đối tượng Recordset, thao tác với cấu trúc CSDL, và thực hiện một thao tác dữ liệu. Một tập hợp các tham số sẽ được sử dụng với đối tượng Command.
  • Recordset object. Tương tự như DAO Recordset object, ta có thể mở các đối tượng Recordset để chỉ đọc hoặc tạo bảng động. Mỗi đối tượng Recordset có một tập các trường (Field).
  • Stream object. Đối tượng này cho phép ta đọc cây đặc biệt – cấu trúc phân cấp (special tree-structured hierarchies), như e-mail messages hoặc các file hệ thống.

2. Mô hình ADO.NET

ADO.NET được thiết kế để cung cấp kiến trúc rời rạc (disconnected architecture). Có nghĩa là các ứng dụng connect tới database truy nạp dữ liệu và lưu trữ trong memory. Sau đó disconnect với database và sử dụng bộ nhớ sao chép (memory copy) của dữ liệu đó. Nếu như database cần phải được update với các thay đổi trên memory copy, một kết nối mới (connection) được hình thành và database được update. Bộ nhớ chính lưu trữ dữ liệu là DataSet, nơi mà chứa các bộ nhớ lưu trữ dữ liệu khác, như là: Các đối tượng DataTable; ta có thể lọc và sắp xếp dữ liệu trên DataSet bằng việc sử dụng các đối tượng DataView.

Việc sử dụng kiến trúc disconnected architecture cung cấp rất nhiều lợi ích, trong đó, quan trọng nhất là cho phép ứng dụng trở lên scale up. Nghĩa là database của ta sẽ thực thi tốt như hỗ trợ hàng trăm users tuy nó chỉ hỗ trợ vài chục users. Điều đó có thể bởi vì ứng dụng connects tới database chỉ đủ để truy nạp hoặc update dữ liệu, bằng cách đó giải phóng các connections và database sẵn có cho các thể hiện khác của ứng dụng hoặc các ứng dụng khác sử dụng cùng database.

Các đối tượng trong ADO.NET

Đối tượng chính được sử dụng trong ADO.NET là đối tượng DataSet. Ta có thể thấy đối tượng DataSet và các thuộc tính, các phương thức, và các đối tượng của nó trong hình 5.2 dưới đây.

Hình 5.2. Mô hình ADO.NET

Xét bảng Bảng 5.1 để tìm hiểu các mô tả ngắn ngọn về các đối tượng hay dùng

Bảng 5.1

  .NET cũng cung cấp các classes, được gọi data providers, sử dụng tên miền (namespaces) để làm việc với các đối tượng ADO.NET và cung cấp các truy xuất với dữ liệu. Lõi của các lớp ADO.NET tồn tại trong namespace System.Data. Namespace này chứa một vài namespaces con. Phần quan trọng nhất của chúng là các tên miền System.Data.SqlClient và System.Data.OleDb. Chúng cung cấp các classes sử dụng cho việc truy cập SQL Server databases và OLE (Object Linking and Embedding) DB- compliant databases (phục hồi dữ liệu). Các lớp của OleDb và SqlClient cho trong hình 5.3. và Bảng 5.2. mô tả vắn tắt các đối tượng thường được sử dụng để thao tác với dữ liệu.  

Hình 5.3. OleDb và SqlClient classes
Bảng 5.2. .NET Data Provider Classes thường được sử dụng để thao tác dữ liệu

Ngoài ra, hai tên miền con khác cũng tồn tại trong tên miền System.Data, đó là: System.Data.OracleClient và System.Data.Odbc. Trong đó, namespace System.Data.OracleClient được sử dụng dành cho các CSDL Oracle. Các lớp SqlClient cung cấp các kết quả tốt nhất khi làm việc với các SQL Server databases; OracleClient cung cấp thực thi tối ưu khi truy cập vào Oracle databases. Namespace System.Data.Odbc cung cấp truy cập tới ODBC (Open Database Connectivity) data sources cũ mà không được support bởi công nghệ OleDb.

Như vậy, các tên miền System.Data.SqlClient, System.Data.OleDb, System.Data.OracleClient, và System.Data.Odbc được biết như là data providers trong ADO.NET.

Trong môn học, ta xây dựng ứng dụng truy xuất SQL Server databases nên sử dụng namespace SqlClient. Tuy nhiên trong ADO.NET, các data providers khác nhau làm việc theo một cách thức tương tự nhau. Vì vậy các kỹ xảo ta sử dụng ở đây có thể được dễ dàng chuyển giao cho các lớp OleDb classes. Với ADO.NET, ta sử dụng data provider này là phù hợp nhất cho

data source của ta. Ta không cần thiết phải học tất cả các interface mới, bởi vì tất cả các data providers làm việc theo một cách thức tương tự nhau.

3. Điểm khác nhau giữa ADO và ADO.NET

  1. ADO làm việc với kết nối dữ liệu (connected data). Nghĩa là khi truy cập dữ liệu, chẳng hạn như viewing hoặc updating dữ liệu, thì nó là thời gian thực (real-time), với một kết nối được sử dụng trong suốt thời gian đó.
  2. ADO.NET sử dụng dữ liệu theo kiểu disconnected. Khi truy cập dữ liệu, ADO.NET tạo bản copy của dữ liệu bằng việc sử dụng XML. ADO.NET chỉ chiếm giữ với việc mở một kết nối trong khoảng thời gian đủ để đẩy dữ liệu vào hoặc để thực hiện bất cứ yêu cầu updates nào. Với điều này, làm cho ADO.NET rất hữu hiệu cho các ứng dụng Web. Nó cũng tốt cho các ứng dụng desktop.
  3. ADO có một đối tượng chính được dùng để tham chiếu dữ liệu, được gọi là Recordset object. Về cơ bản đối tượng này đưa ra một bảng view đơn của dữ liệu, tuy nhiên là ta có thể kết nối các bảng để tạo một tập các bản ghi mới. Với ADO.NET, ta có nhiều đối tượng khác nhau cho phép truy xuất dữ liệu theo các cách khác nhau. Đối tượng DataSet thực sự cho phép ta lưu trữ mô hình quan hệ của database.
  4. ADO chỉ cho phép tạo client-side cursors, ngược lại ADO.NET cho phép chọn hoặc là sử dụng client-side hoặc server-side cursors. Trong ADO.NET, classes thực sự điều khiển sự làm việc của các cursors. Nó cho phép phát triển để lựa chọn cái tốt nhất.

  Như vậy, tùy theo ứng dụng cụ thể ta có thể sử dụng các mô hình kết nối ứng dụng với SQL Server cụ thể. Trong phạm vi môn học ta sẽ sử dụng mô hình ADO.NET với các lớp SqlClient và sử dụng ngôn ngữ lập trình Visual Basic.NET.  


Được cập nhật: 14 tháng 4 lúc 9:56:28 | Lượt xem: 1268

Các bài học liên quan