2011-10-24 12 views
23

Po prostu zaczynam od usług sieciowych SOAP i natknąłem się na WS-Addressing.Do czego służy adresowanie WS?

Przeczytałem Wikipedia page, ale ciężko mi zrozumieć, jaki jest punkt adresowania WS.

Według Wikipedii i różnych źródeł w Internecie, WS-Addressing pozwala umieścić "informacje adresowe" lub "informacje o routingu" w nagłówku żądania SOAP.

Dlaczego ta funkcja jest przydatna? Jeśli wyślę żądanie przez HTTP (lub nawet przez SMTP lub UDP), wówczas adres, na który wysyłam, to adres serwera, który przetworzy moje żądanie, a serwer może po prostu odpowiedzieć tym samym kanałem. Dlaczego więc potrzebne są informacje o adresowaniu/routingu?

Byłbym szczególnie zainteresowany prawdziwym (mniej lub bardziej) przykładem, w którym pomocne jest adresowanie WS.

Odpowiedz

52

Znalazłem WS-Addressing szczególnie przydatny w sytuacjach, w których odpowiedź SOAP nie może być podana natychmiast. Albo zasoby do utworzenia odpowiedzi nie są dostępne od razu, albo sam wynik zajmuje dużo czasu.

Może się to zdarzyć, gdy proces biznesowy obejmuje na przykład "ludzki dotyk" (procesy takie jak te, na które są kierowane są te, które są WS-HumanTask). Możesz trzymać usługi internetowe przed swoją firmą, ale czasem biznes wymaga czasu. Może to być subskrypcja, którą należy ręcznie zweryfikować, zatwierdzić, cokolwiek, ale zajmuje to kilka dni. Czy utrzymasz połączenie otwarte przez cały czas? Czy nie zrobisz nic innego, jak tylko zaczekasz na odpowiedź? Nie! To nieskuteczne.

Potrzebny jest proces powiadomienia. Klient wysyła żądania, ale nie czeka na odpowiedź. Zamiast tego instruuje serwer, gdzie ma wysłać odpowiedź, używając adresu "reply to". Po uzyskaniu odpowiedzi serwer łączy się z tym adresem i wysyła odpowiedź.

I voila ... asynchroniczne interakcje między usługami sieciowymi, oddzielenie czasu życia procesu komunikacji od czasu trwania połączenia HTTP. Bardzo przydatne ...

Ale czekaj ... połączenie HTTP? Dlaczego powinienem się tym przejmować? Co jeśli chcę, aby odpowiedź została odesłana na inny typ protokołu? (które SOAP zapewnia, ponieważ nie jest powiązane z żadnym protokołem).

Przy normalnym przepływie żądania/odpowiedzi odpowiedź jest wysyłana na tym samym kanale, co żądanie, "to jest połączenie, które znasz ... Więc na przykład masz połączenie HTTP ... oznacza to, że HTTP i wyjście HTTP .

Ale z adresowaniem WS nie jesteś do tego przywiązany. Możesz zażądać odpowiedzi na innym typie kanału. Żądanie przychodzi na przykład na HTTP, ale możesz poinstruować serwer, aby wysłał odpowiedź z powrotem przez SMTP, na przykład.

W ten sposób WS-Addressing definiuje standardowe sposoby do kierowania wiadomości przez wiele transportów. Jako wiki page mówi:

zamiast opierania się na transporcie na poziomie sieci do przekazywania informacji o routingu, wiadomość wykorzystaniem WS-Addressing może zawierać swoje własne metadane wysyłka w standardowym nagłówku SOAP.

i jak do obserwacji:

i serwer może odpowiadać po prostu przez ten sam kanał

... co działa dla niektórych może nie działać dla innych, a dla inni mamy WS-Addressing: D.

+1

to jest najlepsze wytłumaczenie dzięki # user159088 –