Do obsługi komunikacji między obiektami w usługach asynchronicznych stosowany jest wzorzec interakcji z wywołaniem zwrotnym. Usług asynchronicznych można używać na przykład w systemach publikowania-subskrypcji, które są udostępniane przez dostawców oprogramowania pośredniego zorientowanego na komunikaty, lub w domenach zarządzania systemami i urządzeniami.
Usługi WS-Notification
Standard usług asynchronicznych jest opisany w specyfikacjach WS-Notification:
- Specyfikacja WS-BaseNotification definiuje interfejsy usług WWW dla producentów powiadomień i konsumentów powiadomień.
Ta specyfikacja obejmuje standardowe wymiany komunikatów implementowane przez dostawców usług, którzy chcą pełnić te role, oraz powiązane wymagania operacyjne.
- Specyfikacja WS-BrokeredNotification definiuje interfejs usług WWW dla brokera powiadomień. Broker powiadomień jest pośrednikiem, który m.in. umożliwia publikowanie komunikatów jednostkom, które same nie są dostawcami usług. Obejmuje ona standardowe wymiany komunikatów, które są implementowane przez dostawców usług będących brokerami powiadomień, oraz powiązane wymagania operacyjne dostawców i requesterów usług uczestniczących w powiadomieniach dostarczanych przez brokera.
- Specyfikacja WS-Topics definiuje mechanizm organizowania i klasyfikowania elementów, które można subskrybować, nazywanych tematami. Są one używane w połączeniu z mechanizmami powiadamiania zdefiniowanymi w specyfikacjach WS-BaseNotification i WS-BrokeredNotification.
Usługi WWW i usługi XML, które implementują specyfikację WS-Notification, można testować, tworząc żądanie asynchroniczne w teście. Żądanie asynchroniczne zawiera interfejsy związane z odpowiednią specyfikacją WS-Notification oraz strukturę wywołania zwrotnego.
Prawnie zastrzeżone usługi asynchroniczne
Istnieje możliwość testowania prawnie zastrzeżonych usług asynchronicznych, które nie implementują specyfikacji WS-Notification. Aby przetestować te usługi, należy ręcznie utworzyć żądanie usługi, które zawiera interfejsy danej usługi, a następnie dodać do żądania strukturę asynchronicznego wywołania zwrotnego.
Dane XML żądania asynchronicznego muszą zawierać punkt końcowy, który określa adres URL odbiorcy wywołania zwrotnego. Podczas testu ten punkt końcowy jest używany do przekierowywania wywołania zwrotnego do testera zamiast rzeczywistego odbiorcy.
Struktura wywołania zwrotnego
Aby przetestować usługę asynchroniczną, należy utworzyć strukturę żądania asynchronicznego w teście w sposób pokazany na poniższym diagramie:
Żądanie usługi WWW lub zwykłe żądanie XML udostępnia działanie subskrypcji i zawiera element wywołania zwrotnego, który opisuje zachowanie testu w trzech stanach:
- Równolegle zawiera elementy testu, które są uruchamiane po żądaniu subskrypcji i podczas oczekiwania na odpowiedź na powiadomienie.
- Odbiór zawiera elementy testu, które są uruchamiane po odebraniu z usługi odpowiedzi na powiadomienie.
- Limit czasu zawiera elementy testu, które są uruchamiane, jeśli odpowiedź na powiadomienie nie zostanie odebrana po czasie opóźnienia określonym w elemencie wywołania zwrotnego.
Gdy wszystkie składniki zawarte w elementach równoległym, odbioru i limitu czasu zakończą działanie, wykonywanie będzie kontynuowane od następnego elementu w teście po żądaniu asynchronicznym.
Metoda generowania struktury asynchronicznego wywołania zwrotnego w teście zależy od tego, czy usługa asynchroniczna wykorzystuje specyfikację WS-Notification:
- Usługi WS-Notification: należy utworzyć żądanie asynchroniczne w teście.
- Usługi prawnie zastrzeżone: należy ręcznie utworzyć w teście żądanie usługi WWW lub żądanie XML, a następnie dodać do żądania strukturę asynchronicznego wywołania zwrotnego.