2011-10-24 27 views
23

Tôi chỉ mới bắt đầu với các dịch vụ web SOAP và tình cờ gặp phải WS-Addressing.WS-Addressing là gì?

Tôi đã đọc số Wikipedia page, nhưng tôi đang gặp khó khăn khi hiểu được điểm của WS-Addressing là gì.

Theo Wikipedia và các nguồn khác nhau trên web, WS-Addressing cho phép đặt "thông tin địa chỉ" hoặc "thông tin định tuyến" vào tiêu đề của yêu cầu SOAP.

Tại sao điều này hữu ích? Nếu tôi gửi yêu cầu qua HTTP (hoặc thậm chí qua SMTP hoặc UDP), thì địa chỉ tôi gửi đến là địa chỉ của máy chủ sẽ xử lý yêu cầu của tôi và máy chủ chỉ có thể trả lời bằng cùng một kênh. Vì vậy, tại sao là địa chỉ/định tuyến thông tin cần thiết?

Tôi đặc biệt quan tâm đến một số ví dụ trong thế giới thực (nhiều hơn hoặc ít hơn) trong đó WS-Addressing là hữu ích.

Trả lời

52

Tôi đã tìm thấy WS-Addressing đặc biệt hữu ích trong các tình huống mà phản hồi SOAP không thể được phân phối ngay lập tức. Tài nguyên để tạo phản hồi không có sẵn ngay lập tức hoặc kết quả sẽ mất một thời gian dài để được tạo.

Điều đó có thể xảy ra khi quy trình kinh doanh của bạn liên quan đến "liên lạc của con người" chẳng hạn (các quy trình như quy trình WS-HumanTask đang nhắm mục tiêu). Bạn có thể kết nối các dịch vụ web trước doanh nghiệp của mình, nhưng đôi khi doanh nghiệp cần có thời gian. Nó có thể là một thuê bao phải được xác minh bằng tay, một cái gì đó được chấp thuận, bất cứ điều gì, nhưng phải mất nhiều ngày để làm điều đó. Bạn sẽ giữ kết nối mở tất cả thời gian đó? Bạn sẽ không làm gì khác ngoài chờ đợi phản ứng? Không! Điều đó không hiệu quả.

Điều bạn cần là quy trình thông báo. Khách hàng đưa ra yêu cầu nhưng không chờ phản hồi. Thay vào đó, nó sẽ hướng dẫn máy chủ gửi phản hồi bằng cách sử dụng địa chỉ "trả lời". Khi phản hồi có sẵn, máy chủ kết nối với địa chỉ đó và gửi phản hồi.

Và voila ... tương tác không đồng bộ giữa các dịch vụ web, tách tuổi thọ của quy trình liên lạc khỏi thời gian tồn tại của kết nối HTTP. Rất hữu ích ...

Nhưng chờ ... kết nối HTTP? Tại sao tôi nên quan tâm đến điều đó? Điều gì sẽ xảy ra nếu tôi muốn phản hồi được gửi lại trên một loại giao thức khác? (SOAP vui lòng cung cấp vì nó không gắn với bất kỳ giao thức nào).

Với dòng yêu cầu/phản hồi bình thường, phản hồi xuất hiện trên cùng một kênh với yêu cầu 'đồng nghĩa với kết nối bạn biết .... Ví dụ: bạn có kết nối HTTP ... có nghĩa là HTTP và HTTP .

Nhưng với WS-Addressing bạn không bị ràng buộc với điều đó. Bạn có thể yêu cầu phản hồi trên một loại kênh khác. Yêu cầu xuất hiện trên HTTP chẳng hạn, nhưng bạn có thể hướng dẫn máy chủ gửi phản hồi trở lại qua SMTP chẳng hạn.

Bằng cách này, WS-Addressing định nghĩa các cách tiêu chuẩn để định tuyến thư qua nhiều lần truyền. Khi wiki page đang nói:

thay vì dựa vào mạng lưới giao thông cấp để truyền đạt thông tin định tuyến, nhắn sử dụng WS-Addressing có thể chứa siêu dữ liệu văn riêng của mình trong một tiêu đề SOAP chuẩn hóa.

và như đối với quan sát của bạn:

và máy chủ chỉ có thể trả lời bằng cách cùng kênh

... nào phù hợp với một số người, có thể không làm việc cho người khác, và cho những người khác chúng tôi có WS-Addressing: D.

+1

đây là giải thích tốt nhất nhờ # user159088 –