489
Chương 12: Dịch vụ Web XML và Remoting
năng qua các nền hay các biên tin cậy, Remoting là lựa chọn tốt nhất cho một hệ thống mà
trong đó tất cả các thành phần đều được xây dựng trên nền .NET và hệ điều hành Windows.
Để sử dụng .NET Remoting, bạn cần các phần sau (mỗi phần phải thuộc về một assembly
riêng biệt):
•
Lớp khả-truy-xuất-từ-xa
Lớp này có thể được truy xuất từ các ứng dụng và các máy
tính khác, và phải dẫn xuất từ
System.MarshalByRefObject
.
•
Ứng dụng host
Ứng dụng này đăng ký kiểu khả-truy-xuất-từ-xa với kiến trúc .NET
Remoting
bằng lớp
RemotingConfiguration
(thuộc không gian tên
System.Runtime.Remoting
). Miễn là ứng dụng host đang chạy, các client ở xa có thể tạo
ra các thể hiện của lớp khả-truy-xuất-từ-xa.
•
Ứng dụng client
Ứng dụng này có thể tạo ra các thể hiện của lớp khả-truy-xuất-từ-xa
trong tiến trình của host và tương tác với chúng. Client sử dụng lớp
RemotingConfiguration
để đăng ký các kiểu mà nó muốn truy xuất từ xa.
Hình sau mô tả sự tương tác giữa ba phần trên. Trong ví dụ này, chỉ có một client. Tuy nhiên,
cũng có thể có nhiều client tạo ra các thể hiện của lớp khả-truy-xuất-từ-xa cùng một lúc.
Trong trường hợp này, mỗi client sẽ có một đối tượng khả-truy-xuất-từ-xa của chính nó, và tất
cả các đối tượng này sẽ thuộc về miền ứng dụng của host.
Hình 12.3 Sử dụng một lớp khả-truy-xuất-từ-xa
Bước đầu tiên là tạo lớp khả-truy-xuất-từ-xa. Ví dụ, lớp khả-truy-xuất-từ-xa dưới đây trả về
một
DataSet
; với cách này, một client có thể truy xuất thông tin từ cơ sở dữ liệu mà không
phải trực tiếp kết nối đến cơ sở dữ liệu phía server.
using System;
using System.Data;
using System.Data.SqlClient;
public class ProductsDB : MarshalByRefObject {
private static string connectionString = "Data Source=localhost;" +
"Initial Catalog=Northwind;Integrated Security=SSPI";
public DataTable GetProducts() {
string SQL = "SELECT * FROM Products";
Client
Ordinary Object
Component host
Remotable Object
Cross-application call