506
Chương 12: Dịch vụ Web XML và Remoting
13.
13.
T o ph
ng th c m t chi u
ạ
ươ
ứ ộ
ề
T o ph
ng th c m t chi u
ạ
ươ
ứ ộ
ề
v i d ch v Web XML hay Remoting
ớ ị
ụ
v i d ch v Web XML hay Remoting
ớ ị
ụ
Bạn muốn một phương thức web hay một thành phần ở xa thực hiện một tác vụ
kéo dài, và bạn không muốn bắt client phải đợi trong lúc mã lệnh đang thực thi.
Tạo một phương thức web một chiều bằng cách áp dụng đặc tính
SoapDocumentMethod
hay
SoapRpcMethod
và thiết lập thuộc tính
OneWay
của đặc tính
này là
true
. Tạo một phương thức Remoting một chiều bằng cách áp dụng đặc
tính
OneWay
thuộc không gian tên
System.Runtime.Remoting.Messaging
.
Với các phương thức một chiều, client gửi một thông điệp yêu cầu, và server đáp ứng tức thì
để cho biết rằng phương thức đã bắt đầu quá trình xử lý. Cách làm việc này có các hệ quả sau:
•
Client không cần đợi trong lúc mã lệnh đang thực thi.
•
Phương thức không thể trả về thông tin nào cho client (thông qua một giá trị trả về hay
một thông số
ByRef
).
•
Nếu phương thức ném một ngoại lệ chưa-được-thụ-lý, nó sẽ không được truyền về cho
client.
Rõ ràng là các phương thức một chiều không phù hợp khi client cần nhận thông tin từ server.
Tuy nhiên, chúng lại lý tưởng khi cần khởi chạy một kiểu tác vụ nào đó phía server (chẳng
hạn, bắt đầu một công việc xử lý bó).
Để tạo một phương thức web một chiều, bạn cần áp dụng đặc tính
SoapDocumentMethod
(thuộc
không gian tên
System.Web.Services.Protocols
) cho phương thức thích hợp và thiết lập
thuộc tính
OneWay
là
true
. Ví dụ dưới đây là một dịch vụ Web XML có hai phương thức, mỗi
phương thức đều gây trì hoãn 10 giây. Một trong hai phương thức này sử dụng đặc tính
SoapDocumentMethod
(để client không phải đợi 10 giây).
using System;
using System.Web.Services;
using System.Web.Services.Protocols;
public class OneWayTestWebService {
[WebMethod()]
public void DoLongTaskWithWait() {
// (Bắt đầu một tác vụ kéo dài và khiến client phải đợi.)
Delay(10);
}
[WebMethod, SoapDocumentMethod(OneWay=true)]
public void DoLongTaskWithoutWait() {