Was sind die Verantwortlichkeiten einer Orchestrierungs-Engine gegenüber einem nachrichtengesteuerten System?
Wenn ich ein System aufbauen muss, das verschiedene unabhängige Komponenten (Cross-Technologie / Plattform-Komponenten, die keinen Web-Service-Endpunkt aufweisen müssen) aneinanderreihen muss, welches Toolset soll ausgewählt werden?
Gibt es eine bessere Option?
Verwenden Sie openESB mit dem Netbeans-Editor oder anderen Open-Source-BPEL-Engines, die den Standard bereitstellen oder den Prozess orchestrieren. Wenn Sie der Meinung sind, dass Leistung sehr wichtig ist, können Sie einige proprietäre ESB- oder BPM-Tools wie Jboss jBPM oder mule ESB usw. ausprobieren.
Bitte beachten Sie, dass BPEL nur dazu verwendet werden kann, Web Services zu nutzen, wenn Ihre Komponenten keine Web Services sind, dann müssen Sie möglicherweise einen ESB wie Mule verwenden, der etwa 200 Protokolle mit Erweiterungen unterstützen kann.
Bei der Entscheidung, ob Sie einen Orchestrierungs- oder nachrichtengesteuerten Arbeitsablauf verwenden sollten, ist die große Frage, der Sie sich stellen müssen, die Notwendigkeit, den Workflow Ihrer Orchestrierung regelmäßig zu ändern. Wenn Sie der Ansicht sind, dass der Geschäftsprozess flexibel sein muss, da er sich ändern kann, dann sollten Sie ein kanonisches Nachrichtenformat verwenden und Orchestrierung verwenden, um die Auswirkungen sich ändernder Beziehungen zwischen Diensten zu minimieren. Wenn Sie denken, dass der Arbeitsablauf stabil ist, können Sie einen messagegesteuerten Arbeitsablauf übernehmen. Persönlich denke ich, Orchestrierung ist der überlegene Ansatz im Allgemeinen, aber es erfordert mehr Software-Infrastruktur, die mit Tools wie Apache Camel die Zeit ist die Belohnung für erhöhte langfristige Flexibilität.
Obwohl diese Frage mit Java getaggt ist, habe ich Angst zu sagen, dass das beste Werkzeug, das ich gesehen habe, wenn Sie wirklich diesen Weg gehen müssen, Microsoft BizTalk Server .
Als ich diese Art von Produkt bewerten musste (und das war vor ein paar Jahren), war es mit seinen Hauptmerkmalen wie folgt:
Am Ende haben wir uns dafür entschieden, keep-it-simple zu behalten und haben die Benachrichtigungsroute gewählt, obwohl dies erfordert, dass Sie die Kontrolle über alle Teilnehmer haben, was möglicherweise nicht der Fall ist.
Ich schlage vor, dass Sie zuerst Ihre einzelnen unabhängigen Komponenten als Dienst über das Web aussetzen (ich habe nicht verstanden, ob Sie bereits Webservices dafür haben). Danach hängt die beste Wahl von der Systemauslastung / -komplexität ab.
Grundsätzlich können Sie zwischen Service-Orchestrierung und Choreografie wählen. Mit BPM / BPEL / ESB erstellte Service-Orchestrierung ist eine Architekturentscheidung, bei der eine einzelne Komponente (der Service Orchestrator / Service Composer) weiß, welche Schritte ausgeführt werden müssen und welche Services in der richtigen Reihenfolge aufgerufen werden (konfiguriert auf dem Orchestrator selbst). . Es behandelt auch die Transaktionsverwaltung (falls erforderlich).
Das Gegenteil ist Choreographie, wo tatsächlich jeder einzelne Dienst, der das ganze System zusammensetzt, weiß, wie er sich verhält, wenn er eine bestimmte Nachricht erhält. In der Tat ist es eine Frage der Vereinbarung zwischen den verschiedenen Komponenten. Service Choreography ist ein dezentralisierter Ansatz für das Servicekompositionsproblem.
Wenn Sie viele Dienste, komplexe Regeln usw. haben, ist es wahrscheinlich einfacher, einen Service-Orchestrator wie jBPM oder etwas ähnliches zu verwenden.
Tags und Links java soa orchestration