Passa ai contenuti principali

SOAP - in sintesi

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


Licenza Creative Commons

Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale

Commenti

Post popolari in questo blog

Telecamere Ip con accesso "nascosto"

Telecamere Ip con accesso "nascosto" Storia triste di un auto-hacking obbligato che mi ha fatto scoprire come la nostra privacy è realmente messa a rischi. Storia Ho acquistato dal mercatino/fiera del Radioamatore di Fasano quattro telecamere IP. La scatola riporta "Smart Camera" LF4810. Ne ho montata una e testata in tutte le sue funzionalità per oltre un mese. Chiaramente la manualistica scarsissima, come da tradizione in questi prodotti cinesi di costo molto concorrenziale, consiste in un "pieghevole" di 4 facciate. Chiaramente non erano documentate le impostazioni necessarie per attivare i protocolli ONVIF e RTSP che mi sono indispensabili per l'uso che ne devo fare. Nonostante questa scarsa documentazione dopo l'installazione base fatta con l'apposita app: tutto sembrava corretto. Chiaramente la prima azione che ho compiuto è stata quella di cambiare la password che di default è "123". Subito dopo h...

Dynamic DNS con Duckdns.org in HTTPS

Obiettivo Avere un dominio https con certificato valido da usare come endpoint pubblico per Homeassistant e per un WebHook per i bot telegram. Fase 1 Registrazione del dominio in un servizio di dynamic DNS come https://www.duckdns.org/   : Scegliere per quale sistema operativo installare il client che si occuperà dell'aggiornamento dell'ip: Seguire la semplice guida per la configurazione del processo cron: Fase 2 Creazione del certificato e installazione sul server. Di tutto questo si occuperà una applicazione che si chiama certbot. $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt install python-certbot-apache $ sudo certbot --apache -d ol3.duckdns.org -d www.ol3.duckdns.org Fase 3 Esporre il servizio https sulla rete pubblica. Aprire o reindirizzare la porta 443 verso l'host sul quale si è fatta la configurazione di certbot dal proprio router. Il certificato di certbot è valido per novanta giorn...

JHipster - Uso base

Cosa è JHipster è un "generatore di applicazioni" che fornisce tutto lo stack necessario ad implementare una applicazione web e/o a microservizi basata su Spring Boot e AngularJs. E' dotato di un marketplace di componenti già pronte: https://www.jhipster.tech/#modules E' dotato di uno strumento web per la modellazione dello schema E-R: https://start.jhipster.tech/jdl-studio/ Prerequisiti - Java 8  - Node.js (usare la versione LTS 64-bit) - NPM viene installato con Node.js ma va aggiornato      $ npm install -g npm - Per usare il JHipster Marketplace, installare Yeoman:       $ npm install -g yo Uso base Gli step, presi dal sito ufficiale sono questi: 1. Installare JHipster:       $ npm install -g generator-jhipster Nota: per installare una versione specifica del generator:   $ npm install -g generator-jhipster@6.0.5 2. Crea una nuova directory ed entra dentro questa:   $ mkdir ...