Ist Async Messaging (insbesondere pub / sub Stil Messaging) lebensfähig als Domain-Service-Architektur oder nur in einer SOA-Umgebung konzentriert?

StackOverflow https://stackoverflow.com/questions/72895

  •  09-06-2019
  •  | 
  •  

Frage

Ich habe asynchrones Messaging erforscht, und Ich mag die Art und Weise es elegant mit einigen Problemen in bestimmten Bereichen beschäftigt und wie es macht Domain-Konzepte deutlicher. Aber ist es ein brauchbares Muster für allgemeine Domain-Driven Development (zumindest in dem Dienst / application / Controller-Schicht), oder ist das Design-Overhead, so dass es sollte auf SOA-basierte Szenarien beschränkt werden, wie Remote-Dienste und verteilen Verarbeitung?

War es hilfreich?

Lösung

Gute Frage :). Das Hauptproblem bei asynchronem Messaging ist, dass, wenn Leute prozeduralen verwenden oder Objekt Sprachen ausgerichtet ist, in einer asynchronen oder ereignisbasiert arbeitet, ist oft ziemlich schwierig und komplex und schwer für den Programmierer zu lesen und zu verstehen. Business-Logik ist oft so einfacher, wenn sein in einem irgendwie synchron aufgebaut - Aufruf Methoden und Ergebnisse zu erzielen sofort etc.)

Faust Meine Regel ist in der Regel einfacher synchrone Programmiermodelle auf der Mikroebene für Business-Logik verwenden, um zu versuchen; dann Asynchronität und SEDA auf der Makroebene verwenden.

Zum Beispiel eine Bestellung einreichen könnte einfach eine Nachricht an eine Nachrichtenwarteschlange schreiben; aber die Verarbeitung der Bestellung kann 10 verschiedene Schritte alle asynchron und parallel in einem Hochleistungs-System mit verteilten vielen gleichzeitigen Prozessen erfordern & Zwirne Bearbeitung einzelne Schritte parallel. So ist die Makroebene Verdrahtung auf einem SEDA Art von Ansatz basiert -. Aber auf der Mikroebene der Code für die einzelnen 10 Stufen geschrieben meist in einem synchronen Programmierstil werden könnte

Andere Tipps

Wie so viele Architektur und Design Fragen, die Antwort ist "es kommt".

Nach meiner Erfahrung, die Stärke des asynchronen Messaging hat in der losen Kopplung war es zu einem Design bringt. Die Kopplung kann in sein:

  • Zeit -. Anfragen können asynchron verarbeitet werden, Gesamt-Skalierbarkeit zu helfen
  • Space -. Wie Sie weisen darauf hin, in eine robustere Art und Weise für die verteilte Verarbeitung ermöglicht, als viele synchrone Designs
  • Technologie -. Nachrichten und Warteschlangen sind eine Möglichkeit, Technologie Unterschiede zu überbrücken

Beachten Sie, dass Nachrichten und Warteschlangen sind eine Abstraktion, die eine Vielzahl von Implementierungen haben kann. Sie müssen nicht unbedingt ein JMS-konform verwenden, Transaktions-, High-Performance-Messaging-Framework. Umgesetzt richtig, kann eine Tabelle in einer relationalen Datenbank als eine Warteschlange handeln mit den Zeilen als Nachrichten. Ich habe beiden Ansätze mit großem Erfolg eingesetzt gesehen.

Ich bin mit @BradS zu BTW

hier eine Möglichkeit, die Middleware von Ihrer Business-Logik während des Versteckens noch immer die Vorteile der losen Kopplung & SEDA - während in der Lage ist, leicht zwischen einer Vielzahl von verschiedener Middleware-Technologie zu wechseln - von im Speicher SEDA zu JMS Javaspaces AMQP zur Datenbank, Dateien oder FTP usw.

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