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

503

Chương 12: Dịch vụ Web XML và Remoting

Client có thể gọi phương thức

MarshalByRefObject.GetLifetimeService

với một đối

tượng ở xa cụ thể để thu lấy một thể hiện

ILease

. Kế tiếp, client có thể gọi phương thức

ILease.Renew

để chỉ định lượng thời gian tối thiểu mà đối tượng sẽ sống.

Ví dụ dưới đây sử dụng cách tiếp cận thứ nhất (dùng thẻ

<lifetime>

trong file cấu hình của

host). Các thiết lập lease áp dụng cho tất cả các đối tượng ở xa do host tạo ra. Sử dụng

M

để

chỉ phút hay

S

để chỉ giây. Đối tượng ở xa có thời gian sống ban đầu là 10 phút. Khi client

truy xuất đối tượng, thời gian sống của nó tự động được làm mới ít nhất ba phút.

<configuration>

<system.runtime.remoting>

<application>

<service>

<wellknown

mode = "Singleton"

type="RemoteObjects.RemoteObject, RemoteObjects"

objectUri="RemoteObject" />

</service>

<channels>

<channel ref="tcp" port="9080" />

</channels>

<lifetime leaseTime = "10M"

renewOnCallTime = "3M" />

</application>

</system.runtime.remoting>

</configuration>

Một cách tiếp cận khác là chép đè phương thức

InitializeLifetimeService

để một đối tượng

ở xa tự kiểm soát thời gian sống của nó. Bạn có thể thêm đoạn mã dưới đây vào lớp ở xa để
nó có thời gian sống mặc định là 10 phút và thời gian làm mới là 5 phút:

public override object InitializeLifetimeService() {

ILease lease = MyBase.InitializeLifetimeService();

// Lease chỉ có thể được cấu hình nếu nó đang ở trạng thái ban đầu.

if (lease.CurrentState == LeaseState.Initial) {

lease.InitialLeaseTime = TimeSpan.FromMinutes(10);

lease.RenewOnCallTime = TimeSpan.FromMinutes(5);

}

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.