Ora che conosciamo come si descrive un Web service cerchiamo di capire in modo veloce come un servizio web comunica con l'applicazione client.
Non approfondiremo molto SOAP poichè è gestito in modo molto efficace dalle librerie fornite con tutti i maggiori linguaggi di programmazione. Ad ogni modo è utile sapere che se le informazioni vengono definite principalmente da WSDL, è grazie a SOAP (Simple Object Access Protocol) se vengono scambiate tra il Web service è l'applicazione che vi accede.
Questo protocollo fornisce una via per comunicare tra applicazioni eseguite su sistemi operativi diversi, con diverse tecnologie e linguaggi di programmazione, tramite HTTP ed XML.
Un messaggio SOAP è un documento XML che contiene i seguenti elementi:
- Envelope, identifica il documento come un messaggio SOAP
- Un elemento Header opzionale, contenete informazioni specifiche per l'applicazione, che non sarà approfondito in questa sede ma che permette di definire alcuni messaggi, anche con diversi destinatari nel caso il messaggio dovesse attraversare più punti di arrivo
- Body è un elemento indispensabile che contiene le informazioni scambiate dalle richieste/risposte
- Fault è un elemento opzionale che fornisce informazioni riguardo ad eventuali errori manifestati durante la lettura del messaggio
Le regole principali per realizzare un messaggio SOAP sono le seguenti:
- Deve essere ovviamente codificato con XML
- Deve utilizzare il
SOAP Evenelope namespace - Deve utilizzare il SOAP Encoding namespace
- Non deve contenere il collegamento ad un DTD e non deve
contenere istruzioni per processare XML
Vediamo lo "scheletro" di un messaggio SOAP:
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> ... </soap:Header> <soap:Body> ... <soap:Fault> ... </soap:Fault> </soap:Body> </soap:Envelope>
All'interno dell'elemento Envelope
abbiamo definito i namespace
soap evelope
ed encoding
che come abbiamo visto sono richiesti per questo tipo di documento. Se non vengono definiti o si definiscono diversamente le applicazioni coinvolte nella comunicazione potrebbero generare un errore o scartare il messaggio.