SOAP - in sintesi
Definizione
Da Wikipedia: SOAP (inizialmente acronimo di simple object access protocol) è un protocollo per lo scambio di messaggi tra componenti software. La parola "oggetto" manifesta che l'uso del protocollo dovrebbe effettuarsi secondo il paradigma della programmazione orientata agli oggetti.
Struttura
Basato su xml si è definito un protocollo che consente di scambiare messaggi "evoluti" che possono arrivane anche ad invocare procedure remote, e quindi non solo scambiare semplicemente una informazione.
I protocolli di trasporto possono essere tanti ma il più comunemente usato è l'HTTP.
L'elemento "Envelop" rappresenta il contenitore del messaggio e costituisce il root del documento xml.
L'"header" contiene metadati come quelli che riguardano l'instradamento, la sicurezza, le transazioni e parametri per l'orchestration.
Il segmento obbligatorio "body" trasporta il contenuto informativo che viene detto carico utile (payload). Questo deve seguire uno schema definito dal linguaggio XML Schema.
"Fault", se presente, fornisce informazioni sugli errori che si sono verificati durante l'elaborazione (può essere presente solo nei messaggi di risposta).
Utilizzo
SOAP può essere utilizzato in due modi diversi per una chiamata:
- Richiesta via SOAP di parametri: il client controlla nel service registry l'oggetto d'interesse e sviluppa il messaggio secondo i parametri ivi contenuti.
- General purpose messaging: un programmatore può sviluppare un suo protocollo privato, il client conosce a priori i parametri e non necessita di consultare il service registry. All'interno del corpo del messaggio inserisco i dati scritti nel formato concordato con lo sviluppatore.
Un esempio di come si potrebbe, in tecnologia SOAP, inviare un messaggio dal servizio "magazzino" al client che ha chiesto i dettagli di un articolo :
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body><getProductDetailsResponse xmlns="http://magazzino.example.com/ws"><getProductDetailsResult><productName>Toptimate, set da 3 pezzi</productName><productId>827635</productId><description>Set di valigie; 3 pezzi; poliestere; nero.</description><price>96.50</price><inStock>true</inStock></getProductDetailsResult></getProductDetailsResponse></soap:Body></soap:Envelope>
Differenze fra REST e SOAP
Un'API in genere usa uno o l'altro approccio a seconda del contesto e delle preferenze dello sviluppatore ma vanno chiariti dei concetti:
1) REST è una architettura che raccoglie linee guida e raccomandazioni lasciando libero il programmatore di implementarle come meglio crede.
a) le richieste arrivano mediante HTTP e la risposta può consistere in HTML, XML, JSON ma anche del testo semplice.b) perché una applicazione sia definita RESTful deve rispettare quanto segue:
- essere client / server con risorse
- comunicazione client/server stateless (nessun contenuto client viene archiviato sul server tra le richieste e le informazioni della sessione si trovano sul client)
- caching dei dati per limitare le interazioni slient/server
- una interfaccia uniforme per i componenti
- un sistema di vincoli a più livelli gerarchici per governare le interazioni fra client e server
2) SOAP è un protocollo
a) richiede l'integrazione di regole che ne aumentano la complessità
b) integra standard di conformità come ACID , sicurezza ecc.
c) rispetta le specifiche seguenti:
- Web Service Security (WS-security) uniforma le modalità di protezione dei messaggi con dei token
- WS_ReliableMessaging: standardizza la gestione degli errori
- WS-addressing: crea pacchetti di informazioni di routing come metadati all'interno degli heads SOAP
- Web Service Description Language (WSDL): descrive il comportamento di un servizio web
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale
Commenti
Posta un commento