507
Chương 12: Dịch vụ Web XML và Remoting
// (Bắt đầu một tác vụ kéo dài nhưng không khiến client phải đợi.)
Delay(10);
}
private void Delay(int seconds) {
DateTime currentTime = DateTime.Now;
while (DateTime.Now.Subtract(currentTime).TotalSeconds < seconds)
{}
}
}
Ví dụ trên giả định dịch vụ Web XML và client đang sử dụng SOAP document (mặc định).
Nếu đang sử dụng Remote Procedure Call (RPC), bạn hãy sử dụng đặc tính tương ứng là
SoapRpcMethod
để đánh dấu phương thức một chiều.
Để tạo một phương thức một chiều trong một thành phần trên Remoting, bạn cần áp dụng đặc
tính
OneWay
(thuộc không gian tên
System.Runtime.Remoting.Messaging
) cho phương thức
thích hợp. Đoạn mã dưới đây trình bày một ví dụ giống như trên nhưng với một thành phần ở
xa:
using System;
using System.Runtime.Remoting.Messaging;
public class OneWayTestRemoting : MarshalByRefObject {
public void DoLongTaskWithWait() {
// (Bắt đầu một tác vụ kéo dài và khiến client phải đợi.)
Delay(10);
}
[OneWay()]
public void DoLongTaskWithoutWait() {
// (Bắt đầu một tác vụ kéo dài nhưng không khiến client phải đợi.)
Delay(10);
}
private void Delay(int seconds) {
DateTime currentTime = DateTime.Now;
while (DateTime.Now.Subtract(currentTime).TotalSeconds < seconds) {}
}
}
Phương thức một chiều không phải là cách duy nhất để loại bỏ việc trì hoãn
client. Bạn cũng có thể điều chỉnh client gọi phương thức web một cách bất đồng