494
Chương 12: Dịch vụ Web XML và Remoting
Để chuyển dữ liệu đến đối tượng ở xa (hoặc chuyển dữ liệu từ đối tượng ở xa về),
các kiểu dữ liệu dùng cho các tham số và giá trị trả về phải là khả-tuần-tự-hóa
(serializable—tất cả các kiểu cơ bản đều có tính chất này). Nếu muốn sử dụng
các lớp tùy biến để chuyển dữ liệu, bạn phải làm cho các lớp này trở thành khả-
tuần-tự-hóa bằng cách áp dụng đặc tính
Serializable
(xem mục 16.1 để biết
thêm chi tiết).
8.
8.
Đăng ký t t c các l p kh -truy-xu t-t -xa trong m t assembly
ấ ả
ớ
ả
ấ ừ
ộ
Đăng ký t t c các l p kh -truy-xu t-t -xa trong m t assembly
ấ ả
ớ
ả
ấ ừ
ộ
Bạn muốn đăng ký tất cả các lớp khả-truy-xuất-từ-xa được định nghĩa trong một
assembly mà không phải chỉ định chúng trong file cấu hình.
Nạp assembly (có chứa các lớp khả-truy-xuất-từ-xa) bằng cơ chế phản chiếu
(reflection). Duyệt qua tất cả các kiểu trong đó và sử dụng phương thức
RemotingConfiguration.RegisterWellKnownServiceType
để đăng ký mỗi lớp khả-
truy-xuất-từ-xa.
.NET cho phép bạn đăng ký các lớp khả-truy-xuất-từ-xa một cách dễ dàng thông qua việc viết
file cấu hình hoặc viết mã chương trình. Xét ví dụ trong mục 12.7. Để đăng ký bằng mã
chương trình, trước hết bạn phải gỡ bỏ những khai báo lớp trong file cấu hình trên server như
sau:
<configuration>
<system.runtime.remoting>
<application>
<channels>
<channel ref="tcp" port="9080" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
Bây giờ, bạn có thể sử dụng kỹ thuật phản chiếu kết hợp với phương thức
RegisterWellKnownServiceType
để đăng ký tất cả các lớp khả-truy-xuất-từ-xa. Tuy nhiên, bạn
cần thêm một tham chiếu đến System.Runtime.Remoting.dll. Đoạn mã dưới đây tìm các lớp
khả-truy-xuất-từ-xa trong RemoteObject.dll và đăng ký mỗi lớp:
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;