Comunicazioni XML con il Protocollo SOAP

Con la crescente diffusione del web si sente maggiormente la necessità di creare applicazioni distribuite tra diversi sistemi operativi, con differenti linguaggi di programmazione e la presenza di firewall nelle reti. SOAP ( Simple Object Access Protocol ) si propone di superare questi problemi attraverso dei messaggi XML trasportati attraverso il protocollo HTTP. L’invocazione di un servizio remoto prevede la creazione di un particolare tipo di documento XML con l’impostazione di opportuni header HTTP da inviare ad un server web. Il fatto che XML viaggi su protocollo HTTP comporta tutta una serie di benefici, a cominciare dalla mancanza di barriere come i firewall che di solito non bloccano il traffico web, inoltre queste tecnologie sono universalmente riconosciute come standard da molti sistemi operativi eterogenei tra loro, ecco perché tramite SOAP è possibile esporre qualsiasi tipo di servizio.
Il protocollo SOAP prevede due tipi di messaggi: Call e Response. Il primo consente l’invocazione di un servizio remoto attraverso delle opportune intestazioni HTTP in cui si specificano le informazioni sul destinatario e sul servizio invocato, mentre il corpo in XML contiene dei parametri da passare al server. Un tipico messaggio di questo tipo potrebbe essere:

POST /XXXServer HTTP/1.1
Host: www.XXXX.com
Content-Type: text/xml
Content-Length: n
SOAPAction: www.XXXX.com/ordini.php

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="xxxxxxx/>
 <SOAP-ENV:Body>
  <m:ordina xmlns:m="xxxxxx">
   <Titolo>Articolo X</Titolo>
   <Codice>Cod XXXX</Codice>
  </m:ordina>
 </SOAP-ENV:Body>
<SOAP-ENV:Envelope>

La parte iniziale del messaggio raggruppa le intestazioni HTTP che specificano il server da contattare ed il servizio da richiamare, nel documento XML abbiamo invece i parametri relativi per usufruire del servizio.
Una possibile risposta ( response ) che si può avere da una tale richiesta può essere:

HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: n

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="xxxxxxx/>
 <SOAP-ENV:Body>
   <return>24,65 euro</return>
 </SOAP-ENV:Body>
<SOAP-ENV:Envelope>

Questo servizio in pratica recupera i dati da un archivio e mostra il prezzo dell’articolo. Lo scopo principale di SOAP è quindi quello di delineare un protocollo per l’interoperabilità di applicazioni distribuite realizzate con diverse tecnologie. Se lo desiderate potremmo, in futuro, approfondire l’argomento, per il momento guardatevi la pagina del progetto SOAP per il server web Apache.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Guida, Programmazione e contrassegnata con , . Contrassegna il permalink.