2013-06-10 23 views
19

Come so SOA (Service Oriented Architecture) si basa su raccolte di moduli software discreti, noti come servizi. Questi servizi possono scambiare informazioni con qualsiasi altro servizio alla portata della rete senza interazione umana. SOA utilizza il protocollo SOAP o REST per trasferire documenti XML o JSON tra vari servizi.Qual è la differenza tra SOA e ROA

Ma sono confuso con ROA (Resource Oriented Architecture) e su quale sia la differenza tra le due architetture.

Qualsiasi aiuto sarà apprezzato, correggimi se sbaglio.

+0

Vedere il libro ["RESTful Web Services - Servizi Web per il mondo reale"] (http://shop.oreilly.com/product/9780596529260.do) di Leonard Richardson, Sam Ruby. Fanno un confronto dettagliato. –

+0

Tichodroma @ Thanx, ma ho provato mentre cercavo tra gli articoli online ma non ero in grado di ottenerlo. Quindi ho pensato agli esperti che consigliano n opinioni su questo argomento. –

risposta

15

Come i termini implica una Service Oriented Architecture è orientata a servizi, e una risorsa Oriented Architecture è orientata a risorse. Le differenze tra A e B sono spesso spiegate meglio definendo l'essenza di A e B, quindi si riduce alla domanda, cos'è un 'servizio' e cos'è una 'risorsa'?

Lo lascio per lo più al lettore, poiché molti sviluppatori probabilmente hanno un'idea di cosa sia. Anche se in realtà non è così facile, in quanto una cosa può essere vista sia come servizio, sia come risorsa (simile al classico Wave-Particle duality of light in physics). Ad esempio, Flickr è un servizio che ti fornisce le foto, ma può anche essere visto come una risorsa per le foto. Ma fondamentalmente una risorsa è costituita da più dati statici (come una foto) e un servizio è più elaborato (ad es. Consegnare una foto o ridimensionare una foto in modo che possano mostrare una miniatura di una foto).

capisco la differenza migliore, cercando il modo in cui un'applicazione implementare è 'funzionalità':

  • un'applicazione creata con un Servizio Orient Architettura è più un 'Facade', ad esempio, combina o compone la sua funzionalità in uscita basata sulla funzionalità che è nei servizi che usa 'dietro gli schermi'. Per esempio. la sua elaborazione principale consiste nel chiamare servizi esterni, fornirli con parametri e combinare i risultati per l'utente.
  • Un'applicazione creata con un'architettura orientata alle risorse esegue internamente più dell'elaborazione (ad esempio per chiamare i componenti esterni, possibilmente attraverso la rete) ma utilizza risorse esterne come input. Per esempio. il suo core processing consiste nel recuperare risorse statiche e quindi fare più calcoli internamente.
14

io rettificare prima :)

Ai fini di questa risposta diciamo solo che il resto è un modo di organizzare le risorse e le operazioni di eseguire su di essi.

SOA utilizza il protocollo SOAP o REST per trasferire documenti XML o JSON tra vari servizi.

Assolutamente no. REST non è un protocollo. SOAP è un protocollo, è vero. Viene frequentemente utilizzato nelle architetture SOA, in particolare per l'implementazione di SOAP su HTTP o SOAP su JMS. Tuttavia, SOA non implica SOAP. Potresti usare qualsiasi altro protocollo. Lo stesso vale per XML e JSON. Potresti usare qualsiasi altra lingua o dialetto.

Ora la spiegazione. SOA è un'architettura orientata ai servizi. Pertanto l'intero sistema è costituito da servizi che tipicamente eseguono alcune operazioni. L'architettura è basata su questo. Immagina un cloud di server in cui ognuno di essi detiene almeno un servizio, ad esempio WeatherPredictor, ForexCalculator, ecc.

A fronte di questo si ha l'architettura orientata alle risorse, ROA, in cui il sistema è costituito da risorse. Immagina un cloud di server in cui ognuno rappresenta una o più risorse, ad esempio Meteo, Euro, Dollaro, ...

Il ROA viene in genere utilizzato in grandi sistemi aperti, a causa dei vantaggi che offre. Nelle architetture ROA normalmente si trovano i servizi RESTfull. Attualmente i servizi RESTfull sono implementati in genere con solo JSON su HTTP o XML su HTTP.

SOA è utilizzato un po 'ovunque. In SOA trovi comunemente SOAP su HTTP, SOAP su JMS, ecc.

Ma un giorno potresti incontrare un servizio web RESTfull che per qualche strana ragione usa SOAP (forse gli sviluppatori avevano bisogno di incorporare il messaggio nella busta SOAP per qualche oscura ragione). Penso che non troverai questo esempio nella vita reale, ma solo per dimostrarti che SOA o ROA non implicano il protocollo da utilizzare, in questo caso SOAP.

Spero che questo aiuti.

+1

Ricevo e sono d'accordo con la rettifica (REST non è un protocollo (ma uno stile architettonico) O. Ma non ho proprio il tuo esempio di ROA, anche se questo sembra essere il nocciolo della questione. scambio "Proverò una risposta a una risposta io stesso – Bart

-3

ROA (Resource Oriented Architecture) è solo un nome di fantasia per una SOA (Based Service Architecture) utilizzando servizi REST.

  • Il vantaggio principale SOA su ROA è il supporto degli strumenti più maturo, la sicurezza del tipo delle richieste XML.
  • Il vantaggio principale di ROA è la facilità di implementazione, l'agilità del design e l'approccio leggero alle cose.

Per Further

+3

ROA è * Architettura orientata alle risorse *. È correlato a RESTful, ma la R non è da quella. – pepr

+0

Immagino ci debba essere un po 'di più rispetto a quella ;-) –

4

Sulla base della mia esperienza, la mia comprensione è il seguente:

ROA è wrapper API oltre modelli di dati, SOA è API su moduli funzionali.

ROA viene utilizzato per fornire operazioni CRUD. SOA viene utilizzato per collegare i moduli in fase di esecuzione.

ROA isola i consumatori API dalle modifiche ai modelli di dati. SOA consente la riduzione delle sostituzioni dei moduli, semplificando l'implementazione e la personalizzazione.

Problemi correlati