I servizi asincroni utilizzano un modello di interazione callback per comunicazioni tra gli oggetti. I servizi asincroni possono essere utilizzati, ad esempio, nei sistemi di pubblicazione/sottoscrizione forniti da fornitori middleware orientati al messaggio o in domini di gestione sistemi e dispositivi.
Servizi WS-Notification
I servizi asincroni sono standardizzati nelle specifiche WS-Notification:
- WS-BaseNotification definisce le interfacce dei servizi web perNotificationProducers e NotificationConsumers.
Questa specifica include scambi di messaggi standard implementati dai provider di servizi che desiderano agire in questi ruoli, insieme ai requisiti operativi associati.
- WS-BrokeredNotification definisce l'interfaccia dei servizi web per un NotificationBroker. NotificationBroker è un intermediario che, tra l'altro, consente alle entità, che non sono provider di servizi, di pubblicare messaggi. Questa specifica include scambi di messaggi standard implementati dai provider di servizi NotificationBroker insieme ai requisiti operativi associati dei provider di servizi e requestor che partecipano alle notifiche mediate.
- WS-Topics definisce un meccanismo per organizzare e categorizzare elementi di interesse per una sottoscrizione nota come topics. Questi vengono utilizzati insieme ai meccanismi di notifica definiti in WS-BaseNotification
e in WS-BrokeredNotification.
È possibile eseguire il test di servizi web e XML che implementano la specifica WS-Notification
creando una richiesta asincrona in un test. La richiesta asincrona contiene le interfacce per la specifica WS-Notification corrispondente, insieme ad una struttura di callback.
Servizi asincroni proprietari
È possibile verificare servizi asincroni proprietari che non implementano specifiche WS-Notification. Per verificare questi servizi, si crea manualmente una richiesta che contenga le interfacce per il servizio, quindi, è possibile aggiungere la struttura asincrona di callback alla richiesta.
I dati XML della richiesta asincrona devono contenere un endpoint che specifichi l'URL del ricevente callback. Durante un test, questo endpoint
viene utilizzato per reindirizzare il callback al tester invece del ricevente reale.
Struttura callback
Per verificare servizi asincroni,
creare una struttura di richiesta asincrona nel test, come mostrato nel seguente diagramma:
Una richiesta del servizio web o una semplice richiesta XML fornisce l'azione di sottoscrizione e contiene l'elemento callback, che descrive il comportamento del test in tre stati:
- Parallelo contiene elementi di test eseguiti dopo la richiesta di sottoscrizione e mentre si era in attesa di una risposta di notifica.
- Ricezione contiene elementi di test eseguiti, quando la risposta di notifica è stata ricevuta dal servizio.
- Timeout contiene elementi di test eseguiti, se la risposta di notifica non viene ricevuta dopo un ritardo specificato nell'elemento callback.
Quando tutto quello che era contenuto negli elementi paralleli, di ricezione e timeout termina l'esecuzione, questa continua con l'elemento successivo nel test dopo la richiesta asincrona.
Il metodo per generare la struttura callback asincrona nel test dipende se il servizio asincrono utilizza la specifica WS-Notification:
- Servizi WS-Notification: creare la richiesta asincrona nel test.
- Servizi proprietari: creare manualmente una richiesta di servizio web o una richiesta XML nel test, quindi aggiungere la struttura asincrona di callback alla richiesta .