Ich möchte ein System erstellen, das Warnmeldungen von verschiedenen Programmen verarbeitet und diese Warnungen per E-Mail an Down-Wind-Verbraucher verarbeiten kann. Dies alles würde über ein internes Netzwerk enthalten sein.
Ich denke, ich möchte, dass die grundlegende Architektur ungefähr so aussieht:
Das Hauptanliegen, das ich derzeit habe, ist das "Message Handler" -Bit, das meine "Art-of-API" sein wird. Ich möchte, dass alle Komponenten dieses Systems Daten an die API senden, die alle Schreibvorgänge in die Datenbank verarbeitet. Ich denke, dieser Ansatz ist einfacher, weil er die Sicherheit vereinfacht und es mir ermöglicht, viele der komplizierteren DB-Abfragen in einem einzigen Programm zusammenzufassen.
Die Sorge ist, dass ich möchte, dass dies sprachunabhängig ist - was bedeutet, dass jeder Code Nachrichten an meinen Handler senden kann -, der sie interpretiert. Ich hoffe, dies über JSON-Flatfiles oder über REST-Aufrufe des Programms zu tun (was den nachgeschalteten Anwendungen Flexibilität verleiht).
Meine Frage ist-
Sollte ich mich mit dem Nachrichtenhandler beschäftigen - oder würde es die Einfachheit erhöhen, nur den direkten Datenbankzugriff auf die nachgelagerten Anwendungen sowie auf die beiden anderen Komponenten (Management Console und Alert Manager) zuzulassen?
Auf diese Weise können sie jede gewünschte Warnung einfügen - solange INSERT in die DB-Tabelle (n) gültig ist.
Ich bin kein Software-Designer von Beruf, entschuldigen Sie mich - ich möchte nur, dass ein Projekt in meiner Freizeit durchgeführt wird.
quelle
Sehr gut gerahmte Frage!
Alle architektonischen Entscheidungen beinhalten Kompromisse. Wenn Sie neugierig auf eine Diskussion über Kompromisse sind, bearbeiten Sie Ihre Frage möglicherweise in diese Richtung. Da die Frage nur nach einer Position fragt, werde ich mich stattdessen für den MessageHandler aussprechen. Ich werde noch einen Schritt weiter gehen und vorschlagen, KEINE Datenbank einzuschließen - zumindest keine SQL-Datenbank, zumindest nicht zu starten. Lassen Sie den MessageHandler einfach JSON im Dateisystem speichern, z. B. ein Verzeichnis pro Stunde empfangener Warnungen (natürlich abhängig vom Volumen), und lassen Sie die API bei Abfrage durch den Warnungsmanager nur die letzten beiden Verzeichnisse von durchlaufen Benachrichtigungen, um zu entscheiden, welche E-Mails zugestellt werden sollen (natürlich abhängig von der Priorität).
In diesem Problem gibt es eine Menge guter Dinge zu kauen, und wenn Sie eine Datenbank in einem frühen Stadium aus dem Bild heraushalten, werden viele Nebengeräusche und unnötige Problemlösungen vermieden. Natürlich haben Sie vielleicht eine versteckte Liebe zum Erstellen relationaler Datenmodelle und träumen davon, SQL zu schreiben. In diesem Fall ist diese Antwort völlig falsch. Aber im Allgemeinen sind selbst die agilsten Datenbanken schreckliche Anwendungsplattformen, und sie werden nur in Systeme aufgenommen, weil sie auf Langlebigkeit und indizierte Abfragen spezialisiert sind.
Viel Glück!
quelle