Antworten:
Grundlegende Technologien wie (XML, SOAP, WSDL) bieten Mittel zum Beschreiben, Lokalisieren und Aufrufen von Diensten als eigenständige Einheit. Diese Technologien liefern jedoch keine umfassenden Verhaltensdetails über die Rolle des Dienstes bei einer komplexeren Zusammenarbeit. Diese Zusammenarbeit umfasst eine Abfolge von Aktivitäten und Beziehungen zwischen Aktivitäten, die den Geschäftsprozess bilden. Es gibt zwei Möglichkeiten, diesen Prozess zu erstellen: Service-Orchestrierung und Service-Choreografie.
Die Service-Orchestrierung stellt einen einzelnen zentralisierten ausführbaren Geschäftsprozess (den Orchestrator) dar, der die Interaktion zwischen verschiedenen Services koordiniert. Der Orchestrator ist für das Aufrufen und Kombinieren der Dienste verantwortlich.
Die Beziehung zwischen allen teilnehmenden Diensten wird durch einen einzelnen Endpunkt (dh den zusammengesetzten Dienst) beschrieben. Die Orchestrierung umfasst die Verwaltung von Transaktionen zwischen einzelnen Diensten. Orchestration verwendet einen zentralisierten Ansatz für die Servicekomposition.
Service-Choreografie ist eine globale Beschreibung der teilnehmenden Services, die durch den Austausch von Nachrichten, Interaktionsregeln und Vereinbarungen zwischen zwei oder mehr Endpunkten definiert wird. Die Choreografie verwendet einen dezentralen Ansatz für die Zusammensetzung von Diensten.
Die Choreografie beschreibt die Interaktionen zwischen mehreren Diensten, wobei Orchestrierung die Kontrolle aus Sicht einer Partei darstellt. Dies bedeutet, dass sich eine Choreografie von einer Orchestrierung darin unterscheidet , wo sich die Logik befinden soll, die die Interaktionen zwischen den beteiligten Diensten steuert.
Service-Orchestrierung : Sie stellen mehrere Services nach einer festen Logik zusammen. Diese Logik wird an einer Stelle beschrieben. Sie können sich ein Team von Leuten mit einem Manager vorstellen, der Mikromanagement betreibt. Der Manager sagt genau, was, wann und wer zu tun ist. Die Teammitglieder kümmern sich nicht um das gesamte Ziel des Jobs, der Manager kombiniert die Ergebnisse zu einem einzigen Ergebnis. Ein praktisches Beispiel ist ein BPEL-Prozess. Der BPEL-Prozess enthält die Logik, kann mehrere Dienste aufrufen und ihre Antworten zu einer einzigen Dienstantwort kombinieren.
Service-Choreografie : Die Entscheidungslogik wird ohne zentralen Punkt verteilt. Sie können sich ein Zuhause vorstellen, in dem jeder auf das Gemeinwohl abzielt und proaktiv ohne Mikromanagement arbeitet. Oder Sie können sich einen menschlichen Körper vorstellen, in dem verschiedene Mitglieder voneinander abhängig sind und für das gemeinsame Ziel arbeiten. Ein praktisches Beispiel ist die ereignisgesteuerte Verarbeitung, bei der ein Agent durch ein Ereignis aktiviert wird und seine Arbeit erledigt. Alle Agenten bilden zusammen ein System. Es gibt keine zentralisierte Logik. Choreografiemöglichkeiten können über die Orchestrierung hinausgehen, da sie stärker auf die reale Welt ausgerichtet sind.
Meiner Meinung nach müssen wir nicht viel zwischen diesen beiden unterscheiden, da wir uns auf die Geschäftslogik konzentrieren müssen. Wo ein einzelner logischer Punkt die Arbeit erledigt, führen wir Orchestrierung durch. Wo ein Problem nicht durch eine zentralisierte Logik abgedeckt werden kann, sind wir sowieso zur Choreografie gezwungen. Aus diesem Grund stoßen wir in der IT häufig auf Orchestrierung, während Choreografie eher ein akademisches Konzept und ein Forschungsthema bleibt. Und sehr oft machen wir Choreografie, ohne es wirklich zu wissen, wie in der realen Welt.
Dienste können zwischen atomaren Diensten und Diensten, die aus anderen Diensten bestehen, unterschieden werden. Solche Kompositionen werden "Orchestrierung" genannt. Manchmal Workflow, manchmal Geschäftsprozess. Beispielsweise ist BPEL eine Orchestrierungssprache, nennt sich jedoch "Geschäftsprozessausführungssprache".
Es ist nicht erforderlich, dass Dienste hierarchisch zusammengesetzt werden müssen. Das heißt, zwei Dienste können miteinander kommunizieren. Das zwischen ihnen laufende Protokoll heißt "Choreografie". Es können zwei Dienste sein, aber normalerweise sind mehr als zwei Dienste beteiligt. Jeder Dienst in einer Choreografie kann als Orchestrator der Partnerdienste angesehen werden. Jeder an einer Choreografie teilnehmende Dienst kann als Orchestrierung / Workflow / Prozess realisiert werden.
Eine Orchestrierung zeigt das vollständige Verhalten jedes Dienstes, während die Choreografie die Beschreibungen des Schnittstellenverhaltens jedes Dienstes kombiniert.
Ein guter wissenschaftlicher Artikel, der Choreografie, Schnittstellenverhalten, Anbieterverhalten und Orchestrierung unterscheidet, ist der folgende: Dijkman, R. & Dumas, M. Serviceorientiertes Design: Ein Ansatz mit mehreren Blickwinkeln International Journal of Cooperative Information Systems, 2004, 13, 337-368
Da der Thread alt ist, aber immer noch für diejenigen schreibt, die hier auf der Suche nach dieser Frage stolpern werden, wie ich es getan habe. Dies ist eine viel diskutierte Frage in der serviceorientierten Architektur (SOA), die für Anfänger viel sauberer erklärt werden muss.
Orchestrierung: Ausführbarer Prozess
Choreografie: Zusammenarbeit zwischen mehreren Parteien
Die Choreografie hingegen ist nicht auf einen zentralen Koordinator angewiesen. Vielmehr weiß jeder an der Choreografie beteiligte Webdienst genau, wann er seine Operationen ausführen und mit wem er interagieren muss. Choreografie ist eine gemeinsame Anstrengung, die sich auf den Austausch von Nachrichten in öffentlichen Geschäftsprozessen konzentriert.
Alle Teilnehmer an der Choreografie müssen den Geschäftsprozess, die auszuführenden Vorgänge, die auszutauschenden Nachrichten und den Zeitpunkt des Nachrichtenaustauschs kennen.
Choreografie vs. Orchestrierung
Unter dem Gesichtspunkt der Erstellung von Webdiensten zur Ausführung von Geschäftsprozessen ist die Orchestrierung ein flexibleres Paradigma und bietet gegenüber der Choreografie die folgenden Vorteile:
Die Koordination der Komponentenprozesse wird zentral von einem bekannten Koordinator verwaltet.
Webdienste können integriert werden, ohne dass sie wissen, dass sie an einem größeren Geschäftsprozess teilnehmen.
Andrei und andere haben gute Arbeit geleistet und erklärt, was Orchestrierung und was Choreografie ist. Für den Softwarearchitekten, der zwischen diesen beiden Alternativen wählt, ist es auch wichtig, sie hinsichtlich unterschiedlicher Qualitäten zu vergleichen.
Orchestrierung plus Choreografie
Choreografie plus Orchestrierung
Leistung: Die Orchestrierung verursacht aufgrund der Interpretation des Workflow-Skripts und der zusätzlichen Ebene der Orchestrierungsplattform selbst einen Leistungsaufwand.
Kosten: Für die Choreografie ist keine zusätzliche Middleware oder Sprache erforderlich, die mit Lernkurven und Governance-Aufwand verbunden ist.
Eine Orchestrierungslösung kann einen SPOF einführen, wenn das Orchestrator-Element keinen Mechanismus für hohe Verfügbarkeit verwendet. Vielen Dank an @Deepak por, der in einem Kommentar darauf hinweist.
Ich würde sagen, Choreografie eignet sich intern gut für stark dezentrale Organisationen. Sie benötigen keinen zentralen Executor für Geschäftsprozesse. Dies erleichtert das unabhängige Wachstum und die Entwicklung jeder Untereinheit der Organisation.
(Ich abonniere diese Interpretation der Frage Orchestrierung vs. Choreografie: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html )
Orchestrierung ist nützlich, wenn Sie die Kontrolle über alle Akteure in einem Prozess haben - wenn sie sich alle in einem Kontrollbereich befinden und Sie den Ablauf der Aktivitäten bestimmen können. Dies ist natürlich am häufigsten der Fall, wenn Sie einen Geschäftsprozess angeben, der in einer Organisation ausgeführt wird, über die Sie die Kontrolle haben.
Mit der Choreografie kann festgelegt werden, wie zwei oder mehr Parteien - von denen keine die Prozesse der anderen Parteien kontrolliert oder möglicherweise sichtbar macht - ihre Aktivitäten und Prozesse koordinieren können, um Informationen und Werte auszutauschen. Verwenden Sie Choreografie, wenn eine Koordination zwischen Kontroll- / Sichtbarkeitsbereichen erforderlich ist. Sie können sich Choreografie in einem einfachen Szenario wie ein Netzwerkprotokoll vorstellen. Es schreibt akzeptable Muster von Anfragen und Antworten zwischen Parteien vor.
Eine andere Sichtweise auf Service Orchestration vs. Choreography:
- Service Orchestration: Rund um eine Geschäftsdomäne.
- Service-Choreografie: Unter mehreren Geschäftsbereichen.
In der Orchestrierung gibt es einen Dirigenten und Instrumentenspieler. Die Spieler spielen nach dem Verhalten des Dirigenten. Wenn der Dirigent ersetzt wird, ist der harmonische Ausdruck unterschiedlich, dh es handelt sich immer noch um dasselbe Spiel (Dienst), jedoch mit einem anderen Ergebnis. Um beispielsweise einen Vorschlag für eine finanzielle Vereinbarung zu unterbreiten, fordert der Orchestrierungsdienst jeden Spieler (Unternehmen oder Versorgungsunternehmen, z. B. Bonitätsprüfung) auf, gemäß der Vorlage des Dirigenten (Geschäft) zu spielen (Ergebnisse zurückzugeben oder das Spiel anzupassen / zu aktualisieren) Regeln). In der Choreografie gibt es einen Choreografen und Gruppen von Tänzern. Choreografie ist eine Richtung, aber jede Gruppe von Tänzern ist autonom in der Verwirklichung dieser Richtung.
Eine Orchestrierung verbindet normalerweise Dienste niedrigerer Ebene. Es ist wie ein Vermittler . Eine Choreografie hilft, die Kopplung noch weiter zu reduzieren. Ich habe dies hier ausführlicher erklärt .