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.
Quindi un'API fa parte di un SOA e non il contrario? – Niklas
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
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