CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 489

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

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.