Web Services: Protocollo SOAP (Simple Object Access Protocol)
Uno dei primi framework RPC basati su XML è stato SOAP (Simple Object Access Protocol) definito inizialmente da un consorzio di compagnie tra le quali figuravano Microsoft, IBM, SAP, ma che oggi è invece divenuto un progetto open source in fase di standardizzazione presso il World Wide Web Consortium (W3C).
Il protocollo SOAP definisce solo la struttura del messaggio ed alcune regole per elaborarlo, rimanendo quindi ad un livello alto e completamente indipendente dal protocollo di trasporto sottostante. Aspetti chiave di SOAP sono, quindi, la sua estendibilità dovuta all’uso di schemi XML e l’utilizzo del protocollo HTTP come meccanismo di trasporto tra client e server, e quindi del Web come infrastruttura di comunicazione.
SOAP è dunque un protocollo leggero che permette di scambiare informazioni in ambiente distribuito:
- SOAP è basato su XML
- SOAP gestisce informazione strutturata
- SOAP gestisce informazione tipata
- SOAP non definisce alcuna semantica per applicazioni o scambio messaggi, ma fornisce un mezzo per definirla
Inoltre, i dati trasportati in SOAP sono molto più firwall-friendly ovvero un firewall può analizzare e dedurre che sono innocui. Tra l’altro SOAP è stato pensato per usare HTTP come trasporto. Però il principale svantaggio di SOAP è costituito proprio dalla natura testuale, che lo rende molto meno performante rispetto alle sue controparti binarie (in particolare CORBA e .NET Remoting).
Infine, bisogna dire che la strttura del messaggio SOAP è composto da 3 elementi principali:
- Un elemento radice, envelope, obbligatorio. Il namespace di SOAP viene dichiarato all’ interno di questo elemento.
- Un elemento header opzionale. Il suo scopo è quello di trasportare informazioni non facenti parte del messaggio, destinate agli “attori”, cioè alle varie parti che il messaggio attraverserà per arrivare al suo destinatario finale.
- Un elemento body obbligatorio. Questo elemento contiene il messaggio vero e proprio.