La co­mu­ni­ca­zio­ne in reti come Internet è possibile solo seguendo una serie di regole fisse. Per evitare che i vari computer e altri di­spo­si­ti­vi abilitati alla rete affondino nel caos, ciascuno di questi aderisce a un pro­to­col­lo di rete. SOAP è, oltre a REST, uno dei più im­por­tan­ti pro­to­col­li su Internet.

Che cos’è SOAP?

La co­mu­ni­ca­zio­ne su Internet si basa su pro­to­col­li quali HTTP, HTTPS, FTP o, a un altro livello, TCP. SOAP è so­prat­tut­to im­por­tan­te per i Web service. Si tratta di un’in­ter­fac­cia at­tra­ver­so la quale un di­spo­si­ti­vo può uti­liz­za­re il servizio di un server. I motori di ricerca, gli acquisti online e molti altri servizi su Internet fun­zio­na­no at­tra­ver­so tali servizi web e SOAP è uno dei pro­to­col­li che lo rendono possibile.

Fatto

In origine, il nome SOAP veniva usato come acronimo di “Simple Object Access Protocol”. Dato che questo nome non si adatta realmente al pro­to­col­lo (che non è né semplice né orientato esclu­si­va­men­te agli oggetti), SOAP viene ora usato come nome vero e proprio.

SOAP è in uso dagli anni ’90 per con­sen­ti­re la co­mu­ni­ca­zio­ne tra un client, ad esempio il browser Internet, e i servizi di un server. Affinché essa funzioni, il client deve inviare le richieste all’API. L’aspetto di queste richieste è regolato dal framework SOAP. Questo insieme di regole consente di ar­chi­via­re i dati specifici di un’ap­pli­ca­zio­ne, il che rap­pre­sen­ta un grande vantaggio di SOAP, perché consente ai Web service di mettere a di­spo­si­zio­ne diverse ap­pli­ca­zio­ni. SOAP definisce solo le regole di base in modo che le ap­pli­ca­zio­ni non abbiano tutte la stessa sintassi per essere uti­liz­za­te come Web service.

N.B.

Lo svi­lup­pa­to­re di software Dave Wiener ha creato SOAP in col­la­bo­ra­zio­ne con un team Microsoft per creare un pro­to­col­lo per­for­man­te per Internet. Grande im­por­tan­za è stata at­tri­bui­ta al fatto che SOAP sia com­pa­ti­bi­le con gli standard W3C, il che rende SOAP rac­co­man­da­to da W3C stesso.

Web service basati su SOAP – le aree di ap­pli­ca­zio­ne del pro­to­col­lo

SOAP entra in gioco quando un sistema deve accedere a un altro sistema in modo ordinato e limitato. Invece di dare al client ri­chie­den­te l’accesso completo al server, un pro­to­col­lo come SOAP permette di limitarne l’accesso alle funzioni ne­ces­sa­rie. L’ar­chi­tet­tu­ra di SOAP consente inoltre la coo­pe­ra­zio­ne tra sistemi molto diversi: il pro­to­col­lo fornisce un quadro di ri­fe­ri­men­to nel quale è possibile integrare l’ap­pli­ca­zio­ne specifica.

Molti Web service sono basati su SOAP come, ad esempio, Amazon ed eBay, che lavorano (par­zial­men­te) con questo pro­to­col­lo di rete.

La struttura di SOAP: fun­zio­na­li­tà del pro­to­col­lo

SOAP si basa sul set di in­for­ma­zio­ni XML. Questo, anch’esso una rac­co­man­da­zio­ne del W3C, è una raccolta di unità in­for­ma­ti­ve ne­ces­sa­rie per garantire la for­ma­zio­ne corretta (cioè una struttura rac­co­man­da­ta) di un documento XML. SOAP lo assimila nella struttura dei suoi messaggi, ren­den­do­la, in linea di principio, pra­ti­ca­men­te identica a quella di un documento XML.

Nella maggior parte dei casi, SOAP è integrato anche nell’HTTP. Il trasporto funziona quindi uti­liz­zan­do il popolare pro­to­col­lo che viene integrato nella sua struttura. Nella pratica, un messaggio HTTP con una richiesta SOAP si presenta in questo modo:

POST /example HTTP/1.1
Host: example.org
Content-Type: text/xml; charset=utf-8
…
<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
...
    <SOAP-ENV:Header>
        ...
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        ...
    </SOAP-ENV:Body>
</SOAP_ENV:Envelope>

In questo esempio, la richiesta inizia con un’in­te­sta­zio­ne HTTP. Segue la co­sid­det­ta SOAP Envelope, che include il contenuto effettivo del messaggio, proprio come la busta di una lettera. Gli elementi di base di SOAP sono quindi l’Header e il Body.

  • Header: l’Header della richiesta SOAP è fa­col­ta­ti­vo e contiene metadati, come la crit­to­gra­fia uti­liz­za­ta.
  • Body: il Body, ovvero il corpo del messaggio, contiene i dati effettivi.

I termini usati nel Body non hanno nulla a che fare con SOAP in sé, ma sono com­ple­ta­men­te di­pen­den­ti dall’ap­pli­ca­zio­ne.

Il pro­to­col­lo viene spesso uti­liz­za­to in com­bi­na­zio­ne con il Web Services De­scrip­tion Language (WSDL), ovvero un lin­guag­gio de­scrit­ti­vo specifico dei servizi web, che a sua volta è in­di­pen­den­te dalla piat­ta­for­ma. Un client può uti­liz­za­re questo lin­guag­gio per de­ter­mi­na­re i servizi che un Web service offre. Dal file WSDL, il client sta­bi­li­sce quali opzioni ha per ef­fet­tua­re una richiesta SOAP. WSDL e SOAP insieme con­sen­to­no così a due sistemi diversi di co­mu­ni­ca­re tra loro senza adat­ta­men­ti pre­li­mi­na­ri.

SOAP vs REST

SOAP e REST (che, in realtà, è un’ar­chi­tet­tu­ra e non un pro­to­col­lo) vengono entrambi uti­liz­za­ti per i Web service, ma af­fron­ta­no il compito in modo diverso. Mentre SOAP è un po’ più datato, REST (o RESTful Web­ser­vi­ces) ha re­cu­pe­ra­to enor­me­men­te e at­tual­men­te fornisce circa il 70% dei servizi web su Internet.

Entrambi offrono vantaggi diversi: REST, ad esempio, è con­si­de­ra­to re­la­ti­va­men­te semplice, non funziona solo con XML ed è più veloce e leggero rispetto a SOAP. La libertà offerta da REST in relazione all’XML (spesso viene uti­liz­za­to JSON) è garantita da SOAP nella selezione del pro­to­col­lo. L’HTTP è senz’altro la scelta più comune, ma in teoria SOAP funziona anche in com­bi­na­zio­ne con FTP, SMTP o altri pro­to­col­li.

SOAP ha inoltre un grande vantaggio in termini di sicurezza: l’esten­sio­ne WS-Security (specifica per gli aspetti di sicurezza relativi ai Web service) è integrata nel pro­to­col­lo di rete. Anche la gestione degli errori è migliore in SOAP, perché integra di­ret­ta­men­te una funzione per la ri­pe­ti­zio­ne delle richieste.

In sintesi

Sia SOAP che REST pre­sen­ta­no vantaggi e svantaggi; non si può dire che una soluzione sia ge­ne­ral­men­te migliore dell’altra. Per via della sua sem­pli­ci­tà, tuttavia, la maggior parte degli svi­lup­pa­to­ri utilizza REST. In de­fi­ni­ti­va, la scelta dipende dal lin­guag­gio di pro­gram­ma­zio­ne uti­liz­za­to e dal contesto in cui si desidera usare il pro­to­col­lo.

Vai al menu prin­ci­pa­le