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);
}