back to top

SOAP: cos’è e come funziona

SOAP è l’acronimo di Simple Object Access Protocol ed è un protocollo per lo scambio di messaggi tra componenti software (solitamente definiti client e web service) che avviene secondo le regole della sintassi XML. La parola Object indica che l’uso del protocollo deve essere fatto secondo il paradigma della programmazione orientata agli oggetti.

Il protocollo definisce un set di regole che il client deve rispettare per richiedere la risposta al server che ospita ed espone il web service. Attraverso lo scambio di messaggi SOAP definiamo, quindi, delle RPC-Call (Remote Procedure Call) cioè delle chiamate di procedure remote: in pratica un componente software locale svolge un’operazione attraverso un’elaborazione compiuta, totalmente o in parte, attraverso l’ausilio di un sistema remoto (il web service).

La trasmissione e la negoziazione di questi messaggi XML è regolata secondo i protocolli HTTP o SMTP, all’interno dei quali viene incapsulato il messaggio SOAP.

Elementi che compongono il framework SOAP

Il framework definito da SOAP è composto dai seguenti elementi:

  • Initial SOAP sender – è il nodo che genera il messaggio;
  • SOAP sender – è il componente incaricato di spedire i messaggi SOAP;
  • SOAP intermediary – è il componente che si occupa di processare l’header del messaggio SOAP, girandolo al corretto receiver;
  • SOAP receiver – è il componente incaricato di ricevere i messaggi SOAP;
  • Ultimate SOAP receiver – è il nodo che riceve il messaggio, ovvero il destinatario.

Si definisce SOAP message path l’insieme dei nodi attraverso il quale circola il messaggio.

Messaggio SOAP

Un messaggio SOAP è strutturato da un header ed un body.

Il segmento header è facoltativo e contiene meta-informazioni quali ad esempio il routing, la sicurezza, le transazioni e parametri richiesti da una procedura.

Il segmento body, invece, è obbligatorio e trasporta il contenuto informativo (payload). Questo deve seguire uno schema definito dall’XML Schema.

Con il termine SOAP Envelope identifichiamo il documento XML che contiene il messaggio SOAP in tutte le sue componenti.

Esempio di scambio messaggi SOAP

Prendiamo in considerazione il servizio TempConvert offerto da w3schools e vediamone la struttura di una richiesta e di una risposta:

SOAP request

In questa messaggio SOAP, viene effettuata una richiesta verso la procedura CelsiusToFahrenheit, passando come parametro una temperatura Celsius di tipo stringa.

<!-- HEADER -->
POST /webservices/tempconvert.asmx HTTP/1.1
Host: www.w3schools.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.w3schools.com/webservices/CelsiusToFahrenheit"

<!-- MESSAGGIO XML BODY -->
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CelsiusToFahrenheit xmlns="http://www.w3schools.com/webservices/">
      <Celsius>...</Celsius>
    </CelsiusToFahrenheit>
  </soap:Body>
</soap:Envelope>

SOAP response

In questa messaggio SOAP, vediamo invece la risposta del server CelsiusToFahrenheitResponse di tipo string, che conterrà il valore passato nella richiesta convertito in Fahreneit.

<!-- HEADER -->
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<!-- MESSAGGIO XML BODY -->
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CelsiusToFahrenheitResponse xmlns="http://www.w3schools.com/webservices/">
      <CelsiusToFahrenheitResult>...</CelsiusToFahrenheitResult>
    </CelsiusToFahrenheitResponse>
  </soap:Body>
</soap:Envelope>
Pubblicitร 

Leggi anche...

WSDL: scopriamo cos’è il Web Services Description Language

Il Web Services Description Language (WSDL) è un documento...

Esempio di file XML

Un file XML (eXtensible Markup Language) รจ un formato...

XML e lettere accentate. Perchè mi da errore?

In un file XML non è possibile utilizzare i...

Il formato RSS: cos’è e come funziona

Il formato RSS è uno standard XML utilizzato per...
Pubblicitร