2011-10-24 3 views
23

Sono appena iniziato con i servizi Web SOAP e sono incappato nell'indirizzamento WS.A cosa serve l'indirizzamento WS?

Ho letto il Wikipedia page, ma sto avendo difficoltà a capire solo qual è il punto di WS-Addressing.

Secondo Wikipedia e varie fonti sul Web, WS-Addressing consente di inserire "informazioni di indirizzamento" o "informazioni di routing" nell'intestazione di una richiesta SOAP.

Perché è utile? Se invio una richiesta tramite HTTP (o anche tramite SMTP o UDP), l'indirizzo che invierò è l'indirizzo del server che elaborerà la mia richiesta e il server può semplicemente rispondere dallo stesso canale. Quindi perché sono necessarie le informazioni di indirizzamento/routing?

Sarei particolarmente interessato a un esempio (più o meno) del mondo reale in cui l'indirizzamento WS è utile.

risposta

52

Ho trovato WS-Addressing particolarmente utile in situazioni in cui la risposta SOAP non può essere servita immediatamente. O le risorse per formare la risposta non sono immediatamente disponibili o il risultato stesso richiede molto tempo per essere generato.

Questo può accadere quando il tuo processo di business comporta "un tocco umano", ad esempio (processi come quelli WS-HumanTask è il targeting). È possibile bloccare i servizi Web di fronte alla propria attività, ma a volte gli affari richiedono tempo. Potrebbe essere un abbonamento che deve essere verificato manualmente, qualcosa da approvare, qualunque cosa, ma ci vogliono giorni per farlo. Hai intenzione di mantenere la connessione aperta per tutto quel tempo? Hai intenzione di fare nient'altro che aspettare la risposta? No! Questo è inefficiente.

Quello che ti serve è un processo di notifica. Il cliente fa una richiesta ma non aspetta la risposta. Indica invece al server dove inviare la risposta utilizzando un indirizzo di "risposta a". Una volta disponibile la risposta, il server si connette a quell'indirizzo e invia la risposta.

E voilà ... interazioni asincrone tra servizi Web, disaccoppiamento della durata del processo di comunicazione dalla durata della connessione HTTP. Molto utile ...

Ma attendere ... connessione HTTP? Perché dovrei preoccuparmi di questo? Cosa succede se voglio che la risposta venga restituita su un altro tipo di protocollo? (che SOAP fornisce gentilmente in quanto non è legato a nessun protocollo).

Con il normale flusso di richiesta/risposta, la risposta arriva sullo stesso canale della richiesta'cosa è una connessione che si sa ... Quindi per esempio si ha una connessione HTTP ... che significa HTTP in e HTTP out .

Ma con WS-Addressing non sei legato a quello. È possibile richiedere la risposta su un altro tipo di canale. La richiesta arriva su HTTP ad esempio, ma puoi istruire il server ad inviare la risposta su SMTP, ad esempio.

In questo modo WS-Addressing definisce i modi standard per instradare un messaggio su più trasporti. Come il wiki page sta dicendo:

, invece di basarsi sul trasporto a livello di rete per trasmettere informazioni di routing, un messaggio utilizzando WS-Addressing può contenere la propria metadati spedizione, in un'intestazione SOAP standardizzata.

e, come per la sua osservazione:

e il server può semplicemente rispondere con lo stesso canale

... ciò che funziona per un po ', potrebbe non funzionare per gli altri, e per altri abbiamo WS-Addressing: D.

+1

questa è la spiegazione migliore grazie # user159088 –