2013-05-18 16 views
148

Attualmente sto facendo alcuni esami e sto facendo fatica con alcuni concetti. Questi sono stati tutti "menzionati" nei miei appunti ma non ho davvero capito come fossero collegati tra loro. Per quanto ne so è:JSON, REST, SOAP, WSDL e SOA: come si collegano tutti insieme

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

WSDL - Una lingua che descrive il servizio del provider.

SOAP - Un protocollo XML 'wrapper' utilizzato dai servizi per inviare messaggi. Funziona in combinazione con WSDL per fornire i 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 neanche su questo)

Guardandosi intorno in internet non sembra esserci una chiara definizione di cosa siano e di come si collegano.

risposta

238

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

Si crea un'API e si consente agli altri di implementare anche i propri front-end. Quello che hai appena fatto qui è implementare una metodologia SOA, ad esempio utilizzando i servizi web.

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

Quindi, si progetta un meccanismo di interscambio tra il back-end (web-service) che fa il trattamento 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 il front-end e il back-end devono "parlare" nella stessa "lingua".


Ecco dove SOAP e REST entrare. Sono modi standard che ci si scegliere di comunicare con il servizio web.

SOAP:

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

RIPOSO:

resto è un concetto di design.

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

Non è rigido come SOAP.RESTful web-services utilizza URI e metodi standard per effettuare chiamate al servizio web. Quando si richiede un URI, viene restituita la rappresentazione di un oggetto, che è quindi possibile eseguire operazioni su (ad esempio 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 consente di restituire anche le immagini.


JSON e XML, sono funzionalmente equivalenti, e entrambi potrebbero essere scelti. L'XML è considerato troppo prolisso e più difficile da analizzare, quindi molte volte i dati vengono rappresentati in modo più adeguato usando JSON. (Ad esempio la serializzazione)

It is a choice nonetheless.

+34

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

22

WSDL: Stand per Web Service Description Language

In SOAP (simple object access protocol), quando si utilizza il servizio web e aggiungere un servizio web per il progetto, l'applicazione client (s) Non conoscere le funzioni del servizio web. Oggigiorno è in qualche modo vecchio stile e per ogni tipo di client diverso è necessario implementare diversi file WSDL. Ad esempio, non è possibile utilizzare lo stesso file per il client .Net e php. Il file WSDL ha alcune descrizioni sulle funzioni del servizio Web. Il tipo di questo file è XML. SOAP è un'alternativa per REST.

REST: Sta per Representational State Transfer

E 'un altro tipo di servizio API, è veramente facile da usare per i clienti. Non è necessario avere un'estensione di file speciale come i file WSDL. L'operazione CRUD può essere implementata da diversi HTTP Verbs (GET per la lettura, POST per la creazione, PUT o PATCH per l'aggiornamento e DELETE per l'eliminazione del documento desiderato), Si basano sul protocollo HTML e la maggior parte delle volte la risposta è nel formato JSON o XML . D'altra parte l'applicazione client deve chiamare esattamente il relativo HTTP Verb tramite nomi e tipi di parametri esatti. A causa della mancanza di file speciali per la definizione, come WSDL, si tratta di un lavoro manuale che utilizza l'endpoint. Ma non è un grosso problema perché ora abbiamo un sacco di plugin per IDE diversi per generare l'implementazione lato client.

SOA: acronimo di Service Oriented Architecture

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

JSON: Stand per javascript Object Notation

quando si serializza un oggetto per javascript il tipo di formato oggetto JSON. immaginate di avere la classe umana:

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

e si dispone di alcuni casi di questa classe:

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

quando si serializza l'oggetto H1 a JSON il risultato è:

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

javascript può valutare questo formato tramite la funzione eval() e creare un array associativo da questa stringa JSON. Questo è un concetto diverso rispetto ad altri concetti che ho descritto precedentemente.