Was ist ein Servicebus und wann brauche ich einen?

101

Ich habe über den NServiceBus sprechen hören , aber ich habe nicht wirklich verstanden, was es ist. Sie behaupten, "der beliebteste Open-Source-Service-Bus für .net" zu sein.

So; Was ist ein "Servicebus" und wann brauche ich einen?

stiank81
quelle
Ich bin wirklich zu spät zur Party, ich werde dies nicht als Antwort posten, weil es nicht als solche ist, aber kurz gesagt, wenn Sie nicht wissen, warum Sie eine brauchen, dann ist es wahrscheinlich, dass Sie nicht ... es löst eine bestimmte Problem, das Sie wahrscheinlich nicht haben, wenn es darum geht, Anwendungen zu verbinden und Ihrem Unternehmen eine zentralisierte API zu geben.
Krieg
9
@Wardy Ich würde Ihrer Aussage nicht zustimmen. Die Tatsache, dass Sie etwas nicht verstehen oder nicht wissen, was es ist, bedeutet nicht, dass es Ihnen nicht helfen würde, davon zu erfahren
Cristian Toma
Das war keine Entschuldigung für Unwissenheit, aber es wurde mehr darauf hingewiesen, dass Servicebus ein Begriff ist, der häufig verwendet wird, wenn Sie auf ein Problem stoßen, das es löst, sodass Sie es entweder brauchen oder nicht und sich daher nie Sorgen machen müssen es.
Krieg
Ich würde dies als Bearbeitung hinzufügen, aber es würde die Frage grundlegend ändern ... NServiceBus ist jetzt als "Particular Service Platform" bekannt und kann auf Insbesondere.net gefunden werden (wohin NServiceBus.com jetzt sowieso weiterleitet).
Dan Atkinson
Wenn Sie den Namen oder das Konzept einer bereits existierenden Sache nicht kennen, schreibt man wahrscheinlich eine eigene. Daher ist es gut, über sie Bescheid zu wissen, damit Sie sie verwenden können (falls erforderlich)
noelicus

Antworten:

80

Sie können sich einen Servicebus als Ethernet von SOA vorstellen.

In erster Linie wird eine Sprache zur Identifizierung von Dingen eingeführt, beispielsweise eine IP-Adresse in Ethernet. Dieser Name ist nicht von Natur aus physisch.

Als nächstes haben Sie auf jedem Knoten etwas Physisches, wie eine Warteschlange im Fall eines Busses zur Unterstützung der halbverbundenen Kommunikation oder eine Ethernet-Karte in der Metapher.

Über das Physische hinaus gibt es den "Protokoll" -Teil der Kommunikation, wie den OSI-Stack für Ethernet. Beim Bus sind dies die Clientbibliotheken, die vom Anwendungscode verwendet werden.

Letztendlich können Sie einen Servicebus als die nächsthöhere Abstraktionsebene für den Aufbau verteilter Systeme ansehen. Sie können es auch für die Client-Server-Kommunikation verwenden, um dauerhafte One-Way-Nachrichten zu erhalten, und für den Server, um Benachrichtigungen an den Client zurückzusenden.

Insbesondere werden Sie feststellen, dass NServiceBus recht leicht und benutzerfreundlich ist, wenn Sie sich mit der Verwendung der Warteschlangentechnologie abfinden - RabbitMQ, MSMQ, reguläre SQL-Tabellen, Amazon SQS, Azure-Speicherwarteschlangen und Azure Service Bus.

Udi Dahan
quelle
Vielen Dank! Denke, ich habe jetzt das große Ganze! Ich habe diese Frage tatsächlich gestellt, um ein bisschen auf die Sitzung vorbereitet zu sein, die Sie heute Abend
abhalten
12

Lesen Sie den Wikipedia-Artikel zu Enterprise Service Bus .

Ein Service Bus ist eine weitere Abstraktionsebene für die unendliche Suche nach einer guten serviceorientierten Architektur. Der Service Bus kann einige der schweren Aufgaben bewältigen, die hinter einer guten serviceorientierten Architektur wie Messaging, Routing und Service-Koordination stehen.

Wenn Sie sich nicht sicher sind, warum Sie so etwas möchten, sollten Sie nachlesen, was eine gute serviceorientierte Architektur ausmacht. Das Buch, das mir wirklich die Augen geöffnet und den Unterschied zwischen Web Services und einer echten serviceorientierten Architektur bewiesen hat, war Thomas Erls serviceorientierte Architektur: Konzepte, Technologie und Design

Justin Niessner
quelle
Kann ich damit die Kommunikation zwischen einer Desktop-Client-Anwendung und einem Server durchführen? Wo der Server im Haus ist, das heißt.
stiank81
Du könntest. Sie können es auch für die Kommunikation zwischen verschiedenen Diensten, verschiedenen Versionen verschiedener Dienste usw. verwenden (einschließlich Situationen, in denen die Dienste unterschiedliche Protokolle verwenden).
Justin Niessner
11

Dieser Begriff wurde mit SOA eingeführt, das in gewisser Weise der Nachfolger (als Modewort) von EAI ist .

Wenn du es brauchst? Das ist eine gute Frage. Es ist sehr komplex.

Eine Faustregel könnte lauten, wenn sie mehr Probleme löst als sie verursacht.

Ernsthaft zu sein, wenn Sie eine heterogene Umgebung haben und (unterschiedliche) Anwendungen (mit unterschiedlichen Technologien) an Geschäftsprozessen ausrichten möchten. Dann könnte es hilfreich sein, BPEL (dies führt jedoch zu Migrationsproblemen) für Orchestrierung und Choreografie zu verwenden

BEARBEITEN: Was nicht auf Wikipedia steht, ist Übung: Ein ESB kann sich mithilfe spezieller Konnektoren und alter Terminalanwendungen für die Verwendung mit Corba oder Java Enterprise anpassen, was durch Interoperabilität gemeint ist. Der Nachteil sind die über 100 "Standards" rund um SOAP, die nicht ohne enormen Aufwand zusammenarbeiten.

Sie brauchen es auf jeden Fall, wenn Sie IT-Systeme innerhalb von sechs Monaten nach dem Zusammenschluss von zwei großen Versicherungsunternehmen miteinander verbinden müssen.

Stapler
quelle
Also - in meiner Desktop-Anwendung, die eine "einfache" Kommunikation mit einer Serverseite hat, ist es nicht erforderlich, mit einem Service Bus groß zu werden? Kann es mir helfen, ein Push-Modell vom Server zu implementieren? Oder wird es auch in diesem Szenario mehr Schmerz als Gewinn sein?
stiank81
@ stiank81 sorry ich habe (Enterprise) Service Bus gelesen und Synapsen abgefeuert. Ich habe Ihren Link zu NServiceBus überprüft, auf den sie sich beziehen. Sie benötigen so etwas in einer Client-Server-App nicht. Es ist ein Konzept für mehrere Anwendungen, die an einem Geschäftsprozess beteiligt sind. Wenn es für dich funktionieren würde? Wenn es mehr Probleme löst als es verursacht.
Stapler
Verwenden Sie es "wenn es mehr Probleme löst als es verursacht" ... liebe es.
Noelicus