Frage

Bei einem frühen Job gab es viel Gerede über "Enterprise Service Bus" (ESB). Ich las Teile eines konzeptionellen Buch darüber, aber nie wirklich verstanden, wie würden Sie implementieren / integrate es konkret. Ich bin mit SOA / Queuing / Verzeichnisdienste / etc vertraut. aber ich verstehe nicht, was genau ein ESB ist.

Ist es eine konkrete Sache (Service / Server / Broker / etc.), Die Sie gerade alle Ihre Anwendungen auf unterschiedliche Weise, um es Haken, oder ist es nur eine konzeptionelle Wege-Systeme zu entwerfen?

Jede Erklärungen oder Links zu guten Beispielen würde sehr geschätzt. Danke.

War es hilfreich?

Lösung

Es ist ein ziemlich hohes Niveau Konzept der Abstraktion. Das zentrale Konzept ist, dass die ESB der Middleware und Schnittstellen bietet, die Unternehmen ermöglichen, ihre Anwendungen zu verbinden, ohne Code zu schreiben.

Dies könnte auch die Vermittlung inkompatibler Protokolle, Daten und Interaktion miteinander vereinbaren.

Die Idee eines zentralen Bus, auf dem alles Gelegenheit passiert gibt für zusätzliche Schichten der Abstraktion. Mit Industriestandards in anderen Anwendungen „Stecker“, Clients und so in diesen Bus macht es so, dass neue Dienste verbinden, Datenquellen, Kunden mit unterschiedlichen Bedürfnissen relativ einfach ist.

Die tatsächlichen Implementierungen

Soweit tatsächliche Implementierungen, das ist die Domäne von sehr großen Unternehmen unterstützen Unternehmen. Während es sehr buzzwordy ist, ist das Ziel, ein Ideal, das auf einiger kleinen Ebene durch einen Vergleich mit dem Internet zu verstehen:

Similarity Internet

Ein großer Kommunikations-Bus mit sehr unterschiedlichen Anwendungen und Daten, aber alle Protokolle laufen standardisieren.

Man kann in der Tat, schreiben Sie eine HTTP zu FTP-Anschluss, den Browser FTP-Sites erlauben würde zugreifen, ohne einen FTP-Client aufgerufen wird (in der Regel in den Browser jetzt gebaut).

Mashups

Mashups zeigt eine interessante Implementierung - nehmen Sie sich etwas Buslinie Daten von der San Francisco Autorität, Karte von Google und Sushi-Bar Standorte von Yahoo mit Nennleistungen und eine einfache Abfrage ausführen, die Ihnen am nächsten Sushi-Bar gibt, die Gewichtung es so, dass Sie ‚d bereit sein, ein wenig weiter für eine bessere Bar zu reisen.

Alle ganz andere Dienste, unvereinbar mit mir, aber unter Verwendung von Standard-Steckverbindern (Yahoo Pipes, zum Beispiel) können sie zusammen in eine zusammenhängende und nützlich ganzen gezogen werden.

-Adam

Andere Tipps

Disclaimer: Ich für IBM arbeiten und beraten auf WebSphere ESB, ein Produkt von IBM entwickelt ESBs bauen mit. Die folgenden sind meine Meinungen und spiegeln nicht unbedingt IBMs Position.

Ein ESB verschiedene Dinge für verschiedene Menschen ist, leider.

Für mich ein ESB ist eine jede Technologie, die Sie in eine SOA einführen kann (Service-Oriented Architecture), mit dem Sie zusammen unterschiedlichen Systemen verbinden. Es führt oft die Funktionen der Protokolltransformation Nachricht Modifikation, Routing, Protokollierung, als Sicherheits-Gateway fungieren, und so weiter. Zum Beispiel könnten Sie einen ESB einen Dienst bisher nur als Web-Service als JMS-basierten Dienst auch belichten.

In dieser Hinsicht ESB-Implementierungen (oder genauer gesagt Software ESBs verkauft bauen mit - wie, dass ich beraten auf) sind oft technisch ähnlich zu dem, was als Messaging oder Warteschlangen Broker bekannt sein, obwohl der Zweck etwas anders ist, weil (wie die Abkürzungen bedeuten) es Dienstleistungen orientiert sich ist eher als Nachrichten von einem Ort zum anderen zu bewegen. Wie wichtig ist die Unterscheidung ist technologisch eine Frage der Stellungnahme.

Meine Erfahrung mit kommerziellen ESB ist es eine overblown und teuere Technologie, die so viele Probleme schafft als sie löst. Die ESB werden neue Systeme verknüpfen und Vermächtnis, Nachrichten werden mit dem Bus überfliegen und alles wird in der Lage sein, alles andere nahtlos zu sprechen. Throw in einiger Elastizität, Orchestrierung und Sie haben ein sehr starkes Stück Enterprise Application Software.

Das Problem kommt, wenn Sie versuchen, sie für real zu verwenden, der Aufwand für den Bus zu schreiben, die Erstellung der Nachrichtenstrukturen und so weiter, können die Vorteile überwiegen. Als hohe Kostenposition wird der ESB als das Allheilmittel für alle Tech-Probleme gesehen, die es nicht ist,  zu viel Zeit auf den Bus ausgegeben und nicht auf die Anwendungen / Daten verbunden sind. Es ist oft der Fall, dass mehrere konkurrierenden Standards um die Vorherrschaft in der gleichen Organisation kämpfen zu den klassischen Tech-dominierten Silos führt, dass diese Systeme sollen eigentlich zu fixieren.

IMHO ist es viel besser zu verwenden, um eine kleine Anzahl von spezifischen Schnittstellen erstellen, in der Regel Web-Services zwischen nur diejenigen System, das sie benötigen.

Es ist im Grunde eine konzeptionelle Art und Weise ein System zu entwerfen - Software-Unternehmen versuchen Sie, mehr zu verkaufen, indem Sie auf es auf den ‚ESB‘ Aufkleber kleben und Managern wie da ein ESB sieht gut aus ‚höhere Ebene‘

.

Ein ESB ist im Grunde eine MOM (Message Oriented Middleware) mit einem zusätzlichen Datenmodell und Strukturdefinition Management. Sie haben eine gemeinsame Datendefinition für alle Anwendungen und Adapter auf diesem Bus (XML mit einem gemeinsamen XSD sein könnte). Alles, was eine Verbindung herstellt senden muss es Informationen zu dieser Datendefinition haften. Die ESB unterstützt das Laden, den Austausch und die Versionierung dieser gemeinsamen Datendefinition. Wenn Sie eine neue Komponente zu einem ESB anschließen, können Sie mehr ‚Kompatibilität‘ erwarten aus der Box, als wenn es zu einem MOM verbindet. Jede Komponente auf diesem Bus ist konzeptionell als ‚Ressource‘ behandelt -. So gibt es eine zusätzliche Abstraktions eingeführten Sender zu entkoppeln vom Empfänger

Beispiel: Angenommen, Sie Anwendung A mit Anwendung B in einer Standard-Message Oriented Middleware verbinden mögen, lassen Sie sich JMS nehmen. Sie sprechen mit Ihren Kollegen auf Anfrage B arbeiten, stimmen zu einem Thema, Nachrichtentyp und Felder und (Pseudo-Code) senden: sendJms ( „TRADE.MSFT“, {MapMessage Händler = „pete“ Preis = 101,4 vol = 100})

Wenn Sie die gleiche Sache in einer serviceorientierten Architektur zu tun, müssen Sie

  1. installieren additinal Software
  2. viele neue Konzepte lernen
  3. definieren Sie Ihre neue Java-Komponente in der Admin-GUI des ESB
  4. implementieren einige Schnittstellen, die von der ESB
  5. gesteuert werden
  6. sendJms (getDestination () {MapMessage Händler = "pete" Preis = 101,4 vol = 100}) - das Ziel beachten vom ESB
  7. injiziert wird

Das erste Mal, es ist wahrscheinlich ein wenig schmerzhaft, aber ich denke, man sich daran gewöhnen kann, so wie du zu EJB gewöhnen kann; -)

Man könnte sagen, ein MOM-System ist ‚nicht typisiert‘ (dynamische Struktur), während ein ESB ‚getippt‘ (statische Struktur). Die Trade-offs von Roh-Messaging vs. ESB sind ähnlich zu anderen nicht typisierten / getippt Auswahl:

  • REST vs. SOAP
  • unvalidated XML vs. XML mit XSD validiert
  • Groovy vs. Java
  • interpretierte Sprache vs. kompilierte Sprache

Für kleinere Projekte ist es schön, Funktionalität hash schnell (zB Groovy-Code), aber für größere Projekte ist es gut, einen Debugger (zB Java) zu haben, im Voraus gewarnt werden, wenn die Dinge zu brechen und einen Standard haben für Menschen em < > vor sie in das Projekt verpflichten.

Also, wenn Ihr Projekt von zu vielen Menschen leidet das System zu brechen, indem sie in unvalidated Änderungen Überprüfung - hin zu mehr Struktur bewegen (ESB statt MOM). Wenn Ihre Projekte leidet nicht genug Dinge immer rechtzeitig fertig - wählen Sie die einfachere, nicht typisierte Lösung. Wenn es beide ist - bekommen einen Berater (nur ein Scherz; -)

Nun, das hängt davon ab, wen man fragt ... Viele sagen, es wäre ein Stück „Middleware“, die zusammen verschiedene Stücke von „Business-Logik“ verbinden die Codierung von Nachrichten zwischen diesen Modulen zu nehmen. Ich denke, das ist eine allgemein genug Definition, aber ich bin sicher, dass Sie bereits dort über Wikipedia und so weiter bekommen haben.

Diejenigen, die die große ESB retten die Welt haben würden sehen es als es am häufigsten präsentiert, eine Drehscheibe für alles zu tun. Die meisten ESB-Implementierungen Aufwand alle sich wiederholende Aufgaben verkapseln wir in Business-Software zu sehen. Das bedeutet, dass die meisten ESBs kümmern Datenübertragung, Sicherheit, Protokollierung, Protokollübersetzung, Event-Systeme, api Exposition über Web-Services, etc.

Ich denke, das ist so klar, wie ich sein kann ... Hoffe, das hilft.

Werfen Sie einen Blick auf meine Präsentation " die Qual der Wahl - Wie Sie den richtigen ESB wählen".

ich erklären, wenn ein ESB, Integration Suite zu verwenden, oder einfach nur eine Integration Framework (wie Apache Camel). Ich diskutiere auch die Unterschiede zwischen Open Source und proprietären ESBs.

Neben einer Standard-Definition, die Sie von Wikipedia . Ich finde es für den Anschluss ein Bündel von Legacy-Systemen auf verschiedenen Plattformen und Technologien ein großes Werkzeug zu sein. Es ist auch ein gutes Werkzeug für den Aufbau von verteilten Workflows und Statusmanagement-Systemen (wie Hauptbuch).

Allerdings ist es ziemlich teuer, komplex und umständlich zu pflegen und zu erweitern, die es eine schlechte Technologie Wahl als universelles Werkzeug macht Sie Anwendungen für die Skalierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top