2012-02-29 8 views
27

Ci sono un sacco di domande What is the difference between... ma non ho trovato questo.Qual è la differenza tra un'API e una SOA

Wikipedia dice circa API

un'interfaccia di programmazione di applicazione (API) è una specifica basata codice sorgente destinato ad essere utilizzato come interfaccia da componenti software di comunicare tra loro.

E questa storia SOA

SOA anche generalmente fornisce un modo per i consumatori di servizi, come ad esempio le applicazioni web-based, di essere a conoscenza dei servizi basati su SOA disponibili.

Non sono entrambe le tecnologie in cui si presentano servizi ad altri servizi?
Qualcuno potrebbe espandersi su questo?

risposta

36

L'architettura orientata ai servizi è una metodologia architettonica. È un modo per specificare la separazione della responsabilità da un punto di vista del business in servizi indipendenti, che comunicano con un'API comune (spesso ma non necessariamente pubblicando eventi su un bus).

Ad esempio, è possibile avere un servizio responsabile per l'acquisizione degli ordini dei clienti, che pubblica un evento OrderCaptured sul bus; e un servizio separato responsabile del tracciamento quando il cliente è fatturato e quanto è dovuto, che si abbona al Bus e risponde all'evento OrderCaptured. Il primo servizio potrebbe non aver bisogno di sapere nulla sulla fatturazione a causa della separazione delle responsabilità. E neanche i due servizi devono conoscersi l'un l'altro, solo riguardo agli eventi che li circondano.

Un'API è un'interfaccia che un componente/servizio espone in modo che altri componenti possano comunicare con esso. Nell'esempio sopra il Bus fornisce un'API comune per un numero di servizi da comunicare.

In sintesi:

API = alcun modo di comunicare esposto da un componente software.

SOA = un insieme di principi di progettazione architettonica aziendale per risolvere i problemi di scalabilità suddividendo la responsabilità in servizi.

+1

Quindi un'API fa parte di un SOA e non il contrario? – Niklas

+3

Sì, ogni architettura (eccetto quelle di piccole dimensioni) avrà una o più API in modo che i suoi componenti possano comunicare. E SOA è un tipo di modello/design dell'architettura. – perfectionist

+0

Grazie, questo mi ha aiutato a scrivere una spiegazione su un SOA qui: http://stackoverflow.com/questions/2026523/what-is-soa-in-plain-english/9499594#9499594 – Niklas

4

In altre parole:

SOA è il modello di architettura.

Un'API è uno dei modi per attivare o abilitare il modello SOA.

SOA è il metodo di progettazione "Pianificazione" {Blue Print}.

API è l'implementazione effettiva del progetto.

+1

>> uno dei modi per mettere in atto o abilitare il modello SOA << quali potrebbero essere gli altri modi? – yathirigan

1

La versione concisa e breve:

API è uno strato per la fornitura di accesso ai dati, tramite http, prese web, e di più, e sono più mobile friendly.Queste API devono essere progettate tenendo presente il supporto SOA e attualmente utilizzano tecnologie moderne che evolvono attorno a JSON e REST.

SOA è più un livello di soluzioni aziendali A2A e B2B in cui quando le aziende devono passare i dati avanti e indietro tra diversi tipi di supporto, le API sono costruite e le regole aziendali sono costruite attorno a questo. Le tecnologie sono normalmente XML, RPC e SOAP.

Entrambi utilizzano tecnologie intercambiabili. La sicurezza può essere indirizzata su entrambi, SOA normalmente così, meno API se lo scopo è quello di servire i dati aperti.

0

Sembra che ci siano molte opinioni su questo; è una lettura interessante Ecco la mia versione.

SOA: SOA è un modello architettonico incentrato sui servizi per la creazione e l'accesso a suite di componenti/servizi software (come indicato nella risposta sopra). I principi SOA che formano il modello SOA possono essere trovati in molti luoghi, non tutti coerenti tra loro, rendendo SOA un termine un po 'nebuloso. Un servizio SOA può essere costruito con quasi tutte le moderne tecnologie di sviluppo software (vedi sotto).

API: in genere con il termine "API" si intende la specifica di come utilizzare o interfacciare a livello di programmazione con una soluzione software. Può riferirsi a cose come le specifiche un linguaggio di programmazione e le sue componenti (Java API), le specifiche di come accedere e/o estendere una soluzione COTS, le specifiche di come utilizzare un servizio o un insieme di servizi (inclusa la firma o struttura dati relativa all'interfacciamento con un servizio), ecc.

SOA e API: un'API per un servizio SOA potrebbe includere le specifiche concettuali e indipendenti dalla tecnologia del servizio (ad esempio, un dato sarà il cognome di un cliente), nonché le specifiche fisiche di utilizzo specifiche della tecnologia per ogni istanziazione fisica di quel servizio SOA (ad esempio, saranno disponibili due istanze, una che utilizza un layout JSON e l'altra un layout XML, ognuna contenente informazioni fisiche equivalenti specifiche per l'elemento dati 'LAST NAME').

Idea sbagliata: il termine API deve essere utilizzato solo per fare riferimento a interfacce RESTful o "semplici, leggere" o basate su JSON (nota a margine: RESTful non è equivalente a "semplice" o "leggero"). In realtà, un'API può essere strutturata seguendo molti schemi utilizzando molti tipi di tecnologie, inclusi i servizi basati su WS *.

Idea sbagliata: la SOA segue rigorosamente gli approcci di interfaccia WS * o altri "complessi, pesanti". In realtà, i servizi SOA possono essere costruiti e consumati utilizzando praticamente qualsiasi moderno set di tecnologie di sviluppo software, inclusi approcci RESTful o file JSON.

Maggiori info su SOA: SOA è un modello di architettura costruita sul concetto che le capacità devono essere istanziati come servizi che hanno una specifica utilizzo croccante, e quindi può essere utilizzato da qualsiasi componente software 'cliente' che possono seguire che specifica l'uso , indipendentemente dalle tecnologie su cui è stato sviluppato il servizio o su cui è stato sviluppato il "client chiamante". I servizi ben scritti dovrebbero essere altamente cross-compatibili.

Poiché molti fornitori e fornitori open source hanno realizzato framework SOA orientati basati su approcci basati su XML, in particolare il set di standard WS *, SOA è stato a volte associato erroneamente agli approcci WS * e/o XML. Ma in realtà, la SOA, come modello concettuale, è agnostica della tecnologia. Un servizio SOA concettuale può essere istanziato una o più volte in molte forme, ogni istanza scegliendo tra una varietà di tecnologie (XML, JSON, WS *, un approccio REST, Java, C++, LAMP, ...) come determinato dai progettisti e sviluppatori di questa istanza.

Una soluzione SOA o un ecosistema di soluzioni è uno basato sui principi SOA; è composto da servizi che sono costruiti e utilizzati seguendo i principi SOA, ancora una volta, utilizzando tutte le tecnologie scelte dagli sviluppatori.