JSON, REST, SOAP, WSDL e SOA: come si collegano tutti insieme


155

Attualmente sto facendo degli esami e sto lottando per alcuni concetti. Questi sono stati tutti "citati" nei miei appunti, ma non ho capito bene come si sono collegati tutti insieme. Per quanto riguarda la mia comprensione è:

SOA: una soluzione per comunicare i consumatori / i fornitori di servizi. (per quanto ho capito, questo è il termine generico per tutto il resto)

WSDL: una lingua che descrive il servizio del provider.

SOAP: un "wrapper" di protocollo XML utilizzato dai servizi per inviare messaggi. Funziona in collaborazione con WSDL per fornire parametri?

REST - Un modello di progettazione simile a SOAP in funzione ma che evita l'XML? (davvero non sono sicuro di questo)

JSON - Un'alternativa all'XML che utilizza JavaScript? (non sono sicuro nemmeno di questo)

Guardandosi in giro in Internet non sembra esserci una chiara definizione di cosa siano tutti questi e di come si intrecciano.

Risposte:


252

Immagina di sviluppare un'applicazione web e di decidere di disaccoppiare le funzionalità dalla presentazione dell'applicazione, perché offre maggiore libertà.

Crei un'API e consenti ad altri di implementare anche i propri front-end. Quello che hai appena fatto qui è implementare una metodologia SOA , cioè utilizzando i servizi web.

I servizi Web rendono i blocchi funzionali accessibili attraverso protocolli Internet standard indipendenti da piattaforme e linguaggi di programmazione.

Quindi, si progetta un meccanismo di interscambio tra il back-end (servizio Web) che esegue l'elaborazione e la generazione di qualcosa di utile e il front-end (che consuma i dati), che potrebbe essere qualsiasi cosa. (Un'applicazione Web, mobile o desktop o un altro servizio Web). L'unica limitazione qui è che front-end e back-end devono "parlare" la stessa "lingua".


Ecco dove entrano SOAP e REST. Sono i modi standard in cui scegli di comunicare con il servizio web.

SAPONE:

SOAP utilizza internamente XML per inviare dati avanti e indietro. I messaggi SOAP hanno una struttura rigida e quindi è necessario analizzare l'XML di risposta. WSDL è una specifica di quali richieste possono essere fatte, con quali parametri e cosa restituiranno. È una specifica completa della tua API.

RIPOSO:

REST è un concetto di design.

Il World Wide Web rappresenta la più grande implementazione di un sistema conforme allo stile architettonico REST.

Non è rigido come SAPONE. I servizi Web RESTful utilizzano URI e metodi standard per effettuare chiamate al servizio web . Quando si richiede un URI, viene restituita la rappresentazione di un oggetto, su cui è possibile eseguire operazioni (ad es. GET, PUT, POST, DELETE). Non sei limitato a scegliere XML per rappresentare i dati, puoi scegliere qualsiasi cosa (JSON incluso)

L'API REST di Flickr va oltre e ti consente di restituire anche le immagini.


JSON e XML , sono funzionalmente equivalenti e scelte comuni. Esistono anche framework basati su RPC come GRPC basato su Protobufs e Apache Thrift che possono essere utilizzati per la comunicazione tra produttori e consumatori di API. Il formato più comune utilizzato dalle API Web è JSON perché è facile da usare e da analizzare in ogni lingua.


36
Ottima risposta fino al cop-out su JSON vs XML. Una versione più equilibrata sarebbe: XML e JSON sono modi per serializzare i dati. XML è più flessibile e ha molti standard progettati attorno ad esso, ma alcuni ritengono che sia troppo complesso e dettagliato. JSON è un formato più semplice che definisce alcune strutture di base in modo conciso, che è facile da usare per le strutture di dati informali; alcune persone stanno lavorando su standard al di sopra di esso per replicare quelli esistenti su XML.
IMSoP,

30

WSDL : Stand per il linguaggio di descrizione del servizio Web

In SOAP (semplice protocollo di accesso agli oggetti), quando si utilizza un servizio Web e si aggiunge un servizio Web al progetto, le applicazioni client non conoscono le funzioni del servizio Web. Oggi è in qualche modo vecchio stile e per ogni tipo di client diverso è necessario implementare WSDLfile diversi . Ad esempio, non è possibile utilizzare lo stesso file per .Nete phpclient. Il WSDLfile contiene alcune descrizioni relative alle funzioni del servizio Web. Il tipo di questo file è XML. SOAPè un'alternativa a REST.

REST : Supporti per il trasferimento di stato rappresentativo

È un altro tipo di servizio API, è davvero facile da usare per i clienti. Non hanno bisogno di avere un'estensione speciale come i WSDLfile. L'operazione CRUD può essere implementata in diversi HTTP Verbsmodi (GET per lettura, POST per creazione, PUT o PATCH per aggiornamento e ELIMINA per l'eliminazione del documento desiderato), si basano sul HTTPprotocollo e il più delle volte la risposta è nel formato JSONo nel XMLformato. D'altra parte, l'applicazione client deve chiamare esattamente i relativi HTTP Verbtramite nomi e tipi di parametri esatti. A causa della mancanza di un file speciale per la definizione, ad esempio WSDL, è un lavoro manuale che utilizza l'endpoint. Ma non è un grosso problema perché ora abbiamo molti plugin per diversi IDE per generare l'implementazione sul lato client.

SOA : Stand per l'architettura orientata ai servizi

Include tutta la programmazione con concetti e architettura dei servizi web. Immagina di voler implementare un'applicazione su larga scala. Una pratica può essere avere alcuni servizi diversi, chiamati micro-servizi e l'intero meccanismo applicativo chiamerebbe il servizio web necessario al momento giusto. Entrambi RESTe SOAPservizi web sono un po ' SOA.

JSON : sta perjavascript Object Notation

quando si serializza un oggetto per JavaScript il tipo di formato oggetto è JSON. immagina di avere la classe umana:

class Human{
 string Name;
 string Family;
 int Age;
}

e hai alcune istanze di questa classe:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

quando si serializza l'oggetto h1 su JSON il risultato è:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptpuò valutare questo formato per eval()funzione e creare una matrice associativa da questa JSONstringa. Questo è un concetto diverso rispetto ad altri concetti che ho descritto in precedenza.


Questa risposta contiene alcuni errori (ad es. HTML <> HTTP)
Yassin Hajaj,

1
@YassinHajaj fixed
Saman Gholami
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.