Qual è la differenza tra SOAP e REST?

SOAP e REST sono due meccanismi di scambio di dati Internet. Immaginiamo ad esempio che il tuo sistema di contabilità interno condivida i dati con il sistema contabile del cliente per automatizzare le attività di fatturazione. Le due applicazioni condividono i dati utilizzando un'API che definisce le regole di comunicazione. SOAP e REST sono due approcci diversi alla progettazione delle API. L'approccio SOAP è altamente strutturato e utilizza il formato dati XML. REST è più flessibile e consente alle applicazioni di scambiare dati in più formati.

Ulteriori informazioni sulle API »

Ulteriori informazioni su XML »

Quali sono le somiglianze tra SOAP e REST?

Per creare applicazioni, è possibile utilizzare molti linguaggi di programmazione, architetture e piattaforme differenti. È difficile condividere dati tra tecnologie così varie, perché presentano formati di dati diversi. Sia SOAP che REST sono emersi nel tentativo di risolvere questo problema.

È possibile utilizzare SOAP e REST per creare API o punti di comunicazione tra diverse applicazioni. I termini servizio Web e API vengono utilizzati in modo intercambiabile. Tuttavia, le API sono la categoria più ampia. I servizi Web sono un tipo speciale di API.

Ecco altre somiglianze tra SOAP e REST:

  • Entrambi descrivono regole e standard su come le applicazioni creano, elaborano e rispondono alle richieste di dati provenienti da altre applicazioni
  • Entrambi usano HTTP, il protocollo Internet standardizzato, per scambiare informazioni
  • Entrambi supportano SSL/TLS per garantire comunicazioni sicure e crittografate

È possibile utilizzare SOAP o REST per creare sistemi distribuiti sicuri, scalabili e tolleranti ai guasti.

Ulteriori informazioni sui certificati SSL»

Come funzionano le API SOAP e le REST API?

SOAP è una tecnologia più vecchia, che richiede un contratto di comunicazione rigoroso tra i sistemi. Nel corso del tempo, per far fronte ai cambiamenti tecnologici, sono stati introdotti nuovi standard relativi ai servizi Web, che tuttavia comportano maggiori costi generali. REST è stato sviluppato dopo SOAP e risolve intrinsecamente molte delle sue carenze. I servizi Web REST sono anche denominati servizi Web RESTful.

API SOAP

SOAP è un protocollo che definisce regole di comunicazione rigorose. Ha diversi standard associati che controllano ogni aspetto dello scambio di dati. Ad esempio, ecco alcuni standard utilizzati da SOAP:

  • Web Services Security (WS-Security) specifica misure di sicurezza come l'utilizzo di identificatori univoci denominati token
  • Web Services Addressing (WS-Addressing) richiede l'inclusione delle informazioni di instradamento come metadati
  • WS-ReliableMessaging standardizza la gestione degli errori nella messaggistica SOAP
  • Web Services Description Language (WSDL) descrive l'ambito e la funzione dei servizi Web SOAP

Quando si invia una richiesta a un'API SOAP, è necessario racchiudere la richiesta HTTP in una busta SOAP. Si tratta di una struttura di dati che modifica il contenuto HTTP sottostante con i requisiti di richiesta SOAP. Grazie alla busta, è inoltre possibile inviare richieste ai servizi Web SOAP con altri protocolli di trasporto, come TCP o Internet Control Message Protocol (ICMP). Tuttavia, le API SOAP e i servizi Web SOAP restituiscono sempre documenti XML nelle risposte.

REST API

REST è uno stile di architettura software che impone sei condizioni sul funzionamento di un'API. Questi sono i sei principi seguiti dalle REST API:

  1. Architettura client-server. Il mittente e il destinatario sono indipendenti l'uno dall'altro per quanto riguarda tecnologia, piattaforma, linguaggio di programmazione e così via.
  2. Struttura a livelli. Il server può disporre di diversi intermediari che collaborano per completare le richieste del client, ma che risultano invisibili a quest'ultimo.
  3. Interfaccia uniforme. L'API restituisce i dati in un formato standard completo e interamente utilizzabile.
  4. Stateless. L'API completa ogni nuova richiesta in maniera indipendente da quelle precedenti.
  5. Memorizzazione nella cache. Tutte le risposte delle API sono memorizzabili nella cache.
  6. Codice on demand. La risposta dell'API può includere un frammento di codice, se necessario.

Le richieste REST vengono inviate utilizzando verbi HTTP come GET (Ottieni) e POST (Pubblica). Le risposte della REST API sono generalmente in JSON, ma possono anche essere in un formato di dati diverso.

Ulteriori informazioni sulle RESTful API »

Ulteriori informazioni su JSON »

Quando utilizzare SOAP e REST?

Prima di scegliere tra SOAP e REST, è importante considerare gli scenari di utilizzo e i requisiti degli utenti delle API. Vale la pena valutare i seguenti criteri.

Progettazione generale dell'applicazione

Le applicazioni moderne come le app per dispositivi mobili e le applicazioni ibride funzionano meglio con le REST API. REST offre la scalabilità e la flessibilità necessarie per progettare applicazioni con modelli di architettura moderni come microservizi e container. Tuttavia, se è necessario integrare o estendere sistemi legacy che dispongono già di API SOAP, potrebbe essere meglio continuare a utilizzare SOAP.

Sicurezza

Le API pubbliche hanno requisiti di sicurezza inferiori e richiedono maggiore flessibilità affinché chiunque possa interagire con esse. Di conseguenza, REST è una scelta migliore quando si creano API pubbliche. Al contrario, alcune API private per requisiti aziendali interni (come reporting dei dati per questioni di conformità) possono trarre vantaggio dalle misure di sicurezza più rigorose previste da WS-Security di SOAP.

Conformità ad ACID

Gli utenti delle API richiedono un livello rigoroso di coerenza e integrità dei dati in una catena di transazioni? Ad esempio, le transazioni finanziarie richiedono che un intero batch di aggiornamenti di dati abbia esito negativo se anche un solo aggiornamento ha esito negativo.

SOAP offre conformità integrata per atomicità, consistenza, isolamento e durata (ACID). Inoltre, SOAP potrebbe essere una soluzione più adatta per i requisiti di elevata integrità dei dati. In tal caso, le REST API potrebbero richiedere moduli software aggiuntivi per applicare lo stato a livello di server o di database.

Differenze principali tra SOAP e REST

SOAP è un protocollo, mentre REST è uno stile di architettura. Questo crea differenze significative nel comportamento delle API SOAP e delle REST API.

Progettazione

L'API SOAP espone funzioni o operazioni, mentre le REST API si basano sui dati. Ad esempio, consideriamo un'applicazione con dati dei dipendenti che altre applicazioni possono manipolare. L'API SOAP dell'applicazione potrebbe esporre una funzione denominata CreateEmployee. Per creare un dipendente, è necessario specificare il nome della funzione nel messaggio SOAP quando si invia una richiesta.

Tuttavia, la REST API dell'applicazione potrebbe esporre un URL denominato /employees e una richiesta POST a quell'URL creerebbe un nuovo registro dipendente.

Flessibilità

Le API SOAP sono rigide e consentono solo la messaggistica XML tra le applicazioni. L'application server deve inoltre mantenere lo stato di ogni client. Ciò significa che durante l'elaborazione di una nuova richiesta deve ricordare tutte le richieste precedenti.

REST è più flessibile e consente alle applicazioni di trasferire dati come testo normale, HTML, XML e JSON. REST è anche stateless, quindi la REST API tratta ogni nuova richiesta in maniera indipendente dalle richieste precedenti.

Prestazioni

I messaggi SOAP sono più grandi e complessi, il che ne rallenta la trasmissione e l'elaborazione. Ciò può aumentare i tempi di caricamento della pagina.

Grazie alle dimensioni ridotte dei suoi messaggi, REST è più veloce ed efficiente di SOAP. Le risposte REST sono inoltre memorizzabili nella cache, quindi il server può archiviare i dati a cui si accede di frequente in una cache per ridurre ulteriormente i tempi di caricamento delle pagine.

Scalabilità

Il protocollo SOAP richiede che le applicazioni archivino lo stato tra le richieste e ciò aumenta i requisiti di larghezza di banda e memoria. Di conseguenza, le applicazioni risultano costose e difficili da scalare.

A differenza di SOAP, REST consente un'architettura stateless e a più livelli, il che la rende più scalabile. Ad esempio, l'application server può passare la richiesta ad altri server o consentire a un intermediario (come una rete di distribuzione di contenuti) di gestirla.

Sicurezza

SOAP richiede un livello aggiuntivo di WS-Security per funzionare con HTTPS. WS-Security utilizza contenuti di intestazione aggiuntivi per garantire che solo il processo designato nel server specificato legga il contenuto del messaggio SOAP. Ciò aumenta i costi generali di comunicazione e influisce negativamente sulle prestazioni.

REST supporta HTTPS senza costi aggiuntivi.

Affidabilità

SOAP dispone di ha una logica di gestione degli errori integrata e offre maggiore affidabilità. REST richiede invece di effettuare un nuovo tentativo in caso di errori di comunicazione, perciò è meno affidabile.

Riepilogo delle differenze tra SOAP e REST

 

 

SOAP

REST

Sta per 

Simple Object Access Protocol

Representational State Transfer

In cosa consiste?

SOAP è un protocollo per la comunicazione tra applicazioni

REST è uno stile di architettura per la progettazione di interfacce di comunicazione.

Progettazione

L'API SOAP espone l'operazione.

La REST API espone i dati.

Protocollo di trasporto

SOAP è indipendente e funziona con qualsiasi protocollo di trasporto.

REST funziona solo con HTTPS.

Formato dei dati

SOAP supporta solo lo scambio di dati XML.

REST supporta XML, JSON, testo normale, HTML.

Prestazioni

I messaggi SOAP sono più grandi, quindi la comunicazione è più lenta.

REST offre prestazioni più veloci grazie ai messaggi più piccoli e al supporto per la memorizzazione della cache.

Scalabilità

SOAP è difficile da scalare. Il server mantiene lo stato memorizzando tutti i messaggi precedenti scambiati con un client.

REST è facile da scalare. È stateless, quindi ogni messaggio viene elaborato indipendentemente da quelli precedenti.

Sicurezza

SOAP supporta la crittografia con costi aggiuntivi.

REST supporta la crittografia senza diminuire le prestazioni.

Caso d'uso

SOAP è utile nelle applicazioni legacy e nelle API private.

REST è utile nelle applicazioni moderne e nelle API pubbliche.

In quale modo AWS può supportare i requisiti API?

Amazon Web Services (AWS) offre Gateway Amazon API per supportare i requisiti API. API Gateway è un servizio completamente gestito che semplifica agli sviluppatori la creazione, la pubblicazione, la manutenzione, il monitoraggio e la protezione delle API su qualsiasi scala. Con Gateway API, è possibile creare REST API che consentono di realizzare applicazioni di comunicazione bidirezionale in tempo reale.

Ecco alcuni vantaggi che si possono ottenere utilizzando Gateway API:

  • Fornire agli utenti prestazioni ad alta velocità sia per le richieste che per le risposte delle API.
  • Autorizza l'accesso alle API con AWS Identity and Access Management (IAM) e Amazon Cognito. Entrambi i servizi forniscono il supporto OAuth nativo.
  • Eseguire simultaneamente più versioni della stessa API per iterare, testare e rilasciare rapidamente nuove versioni.
  • Monitorare i parametri delle prestazioni e le informazioni su chiamate API, latenza dei dati e frequenza di errore. 

Crea un account AWS e inizia a utilizzare le REST API su AWS oggi stesso.

Passaggi successivi con AWS