Risposte:
Tecnologie di base come (XML, SOAP, WSDL) forniscono mezzi per descrivere, localizzare e invocare servizi come entità a sé stante. Tuttavia, queste tecnologie non forniscono un ricco dettaglio comportamentale sul ruolo del servizio in una collaborazione più complessa. Questa collaborazione include una sequenza di attività e relazioni tra attività che costruiscono il processo aziendale. Esistono due modi per creare questo processo: orchestrazione del servizio e coreografia del servizio.
L'orchestrazione del servizio rappresenta un singolo processo aziendale eseguibile centralizzato (l'orchestratore) che coordina l'interazione tra i diversi servizi. L'orchestratore è responsabile dell'invocazione e della combinazione dei servizi.
Le relazioni tra tutti i servizi partecipanti sono descritte da un singolo endpoint (ovvero il servizio composito). L'orchestrazione include la gestione delle transazioni tra singoli servizi. L'orchestrazione utilizza un approccio centralizzato per la composizione del servizio.
La coreografia del servizio è una descrizione globale dei servizi partecipanti, definita dallo scambio di messaggi, dalle regole di interazione e dagli accordi tra due o più endpoint. La coreografia utilizza un approccio decentralizzato per la composizione del servizio.
La coreografia descrive le interazioni tra più servizi, in cui l'orchestrazione rappresenta il controllo dalla prospettiva di una parte. Ciò significa che una coreografia differisce da un'orchestrazione rispetto a dove dovrebbe risiedere la logica che controlla le interazioni tra i servizi coinvolti.
Orchestrazione di servizi : si mettono insieme diversi servizi secondo una logica fissa. Questa logica è descritta in un unico posto. Puoi immaginare una squadra di persone con un manager che fa micro-gestione. Il manager dice in modo preciso cosa, quando e chi dovrebbe fare. I membri del team non si occupano dell'intero obiettivo del lavoro, il manager combina i risultati in un unico risultato. Un esempio pratico è un processo BPEL. Il processo BPEL contiene la logica, può invocare diversi servizi e combinare le loro risposte in una singola risposta di servizio.
Coreografia del servizio : la logica decisionale è distribuita, senza punto centralizzato. Puoi immaginare una casa, dove tutti mirano al bene comune e lavorano in modo proattivo senza micro-gestione. Oppure puoi immaginare un corpo umano, in cui membri diversi sono interdipendenti e lavorano per l'obiettivo comune. Un esempio pratico è l'elaborazione basata su eventi, in cui un agente viene attivato da un evento e fa il suo lavoro. Tutti gli agenti creano un sistema insieme. Non esiste una logica centralizzata. Le possibilità della coreografia possono andare oltre l'orchestrazione poiché è più allineata con il mondo reale.
La mia opinione è che non abbiamo bisogno di distinguere molto tra questi due, in quanto dobbiamo concentrarci sulla logica aziendale. Laddove un singolo punto logico svolge il lavoro, facciamo l'orchestrazione. Laddove un problema non può essere coperto da una logica centralizzata, siamo comunque costretti alla coreografia. Questo è il motivo per cui spesso ci imbattiamo nell'orchestrazione dell'IT, mentre la coreografia rimane più un concetto accademico e un argomento di ricerca. E molto spesso facciamo coreografie senza saperlo davvero, come nel mondo reale.
I servizi possono essere distinti tra servizi atomici e servizi composti da altri servizi. Tali composizioni sono chiamate "orchestrazione". A volte flusso di lavoro, a volte processo aziendale. Ad esempio, BPEL è un linguaggio di orchestrazione, ma si definisce "linguaggio di esecuzione dei processi aziendali".
Non è necessario che i servizi debbano essere composti gerarchicamente. Ciò significa che due servizi possono parlare tra loro. Il protocollo che corre tra loro si chiama "coreografia". Possono essere due servizi, ma di solito sono coinvolti più di due servizi. Ogni servizio in una coreografia può essere visto come un orchestratore dei servizi del partner. Ogni servizio che prende parte a una coreografia può essere realizzato come orchestrazione / flusso di lavoro / processo.
Un'orchestrazione mostra il comportamento completo di ciascun servizio mentre la coreografia combina le descrizioni del comportamento dell'interfaccia di ciascun servizio.
Un buon articolo scientifico che distingue la coreografia, il comportamento dell'interfaccia, il comportamento del provider e l'orchestrazione è il seguente: Dijkman, R. & Dumas, M. Design orientato ai servizi: un approccio multi-punto di vista International Journal of Cooperative Information Systems, 2004, 13, 337-368
Dato che il thread è vecchio, ma ancora scrivendo ad esso per coloro che sono inciampati qui alla ricerca di questa domanda come ho fatto io. Questa è una domanda molto dibattuta nell'architettura orientata ai servizi (SOA) che richiede una spiegazione molto più chiara per i principianti.
Orchestrazione: processo eseguibile
Coreografia: collaborazione multipartitica
La coreografia, al contrario, non si basa su un coordinatore centrale. Piuttosto, ogni servizio Web coinvolto nella coreografia sa esattamente quando eseguire le sue operazioni e con chi interagire. La coreografia è uno sforzo collaborativo incentrato sullo scambio di messaggi nei processi aziendali pubblici.
Tutti i partecipanti alla coreografia devono essere consapevoli del processo aziendale, delle operazioni da eseguire, dei messaggi da scambiare e dei tempi degli scambi di messaggi.
Coreografia vs. Orchestrazione
Dal punto di vista della composizione dei servizi Web per l'esecuzione dei processi aziendali, l'orchestrazione è un paradigma più flessibile e presenta i seguenti vantaggi rispetto alla coreografia:
Il coordinamento dei processi dei componenti è gestito centralmente da un coordinatore noto.
I servizi Web possono essere incorporati senza essere consapevoli del fatto che stanno prendendo parte a un processo aziendale più ampio.
Andrei e altri hanno fatto un buon lavoro spiegando cos'è l'orchestrazione e cos'è la coreografia. Per l'architetto del software che sceglie tra queste due alternative, è anche importante confrontarle rispetto alle diverse qualità.
Vantaggi dell'orchestrazione sulla coreografia
La coreografia va oltre l'orchestrazione
Prestazioni: l' orchestrazione comporta un sovraccarico di prestazioni a causa dell'interpretazione degli script del flusso di lavoro e del livello aggiuntivo della piattaforma di orchestrazione stessa.
Costo: la coreografia non richiede middleware o lingua aggiuntivi, che hanno curve di apprendimento e oneri di governance associati.
Una soluzione di orchestrazione potrebbe introdurre uno SPOF se l'elemento dell'orchestratore non utilizza un meccanismo per l'alta disponibilità. Grazie @Deepak per averlo sottolineato in un commento.
Direi che la coreografia è adatta internamente per organizzazioni altamente decentralizzate. Non avrai bisogno di un esecutore centrale dei processi aziendali. Ciò facilita la crescita e lo sviluppo indipendenti di ciascuna delle sottounità organizzative.
(Sottoscrivo questa interpretazione dell'orchestrazione rispetto alla domanda coreografica: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html )
L'orchestrazione è utile quando hai il controllo su tutti gli attori in un processo, quando sono tutti in un dominio di controllo e puoi dettare il flusso delle attività. Questo è ovviamente il più delle volte quando si specifica un processo aziendale che verrà attuato all'interno di un'organizzazione su cui si ha il controllo.
La coreografia è un modo per specificare come due o più parti - nessuna delle quali abbia alcun controllo sui processi delle altre parti, o forse qualsiasi visibilità di tali processi - possano coordinare le loro attività e processi per condividere informazioni e valore. Usa la coreografia quando è richiesto il coordinamento tra domini di controllo / visibilità. Puoi pensare alla coreografia, in uno scenario semplice, come a un protocollo di rete. Stabilisce schemi accettabili di richieste e risposte tra le parti.
Un altro modo di guardare Service Orchestration vs. Coreografia:
- Service Orchestration: Around a Business Domain.
- Coreografia di servizio: tra più domini aziendali.
Nell'orchestrazione c'è un direttore e ci sono musicisti. I giocatori giocano in base a come conduce il conduttore. Se il conduttore viene sostituito, l'espressione armonica sarà diversa, ovvero sarà sempre lo stesso gioco (servizio) ma con un risultato diverso. Ad esempio, per fornire una proposta di accordo finanziario, il servizio di orchestrazione condurrà chiedendo (invocando) a ciascun giocatore (entità o servizio di utilità, ad esempio controllo del credito) di giocare (restituire risultati o regolare / aggiornare la propria esecuzione) in base al modello del conduttore (attività commerciale regole). Nella coreografia c'è un coreografo e ci sono gruppi di ballerini. La coreografia è una direzione, ma ogni gruppo di ballerini è autonomo su come realizzare quella direzione.