Frage

Wir haben eine Website, auf der Transaktionen eingegeben werden und durch einen Workflow setzen. Wir werden die Standard-BLL (Business Logic Layer), DTO (Data Transfer Object), DAL (Data Access Layer) etc. für eine abgestufte Anwendung folgen. Wir haben die Notwendigkeit, alles heraus zu trennen, weil einige Transaktionen mehrere Anwendungen mit unterschiedlicher Business-Logik kreuzen.

Wir haben auch einen Back-End-Prozessor. Es behandelt unsere Transaktionen, sobald der Workflow abgeschlossen ist. Es arbeitet mit verschiedenen Drittsystemen, von denen einige instabil sind, oder die Schnittstelle zu ihnen instabil ist, und dann meldet den Status der Transaktion. Jede Website wird seine eigene Version des Back-End-Prozessor haben.

Nun ist die Frage, mit N-Tiere, schlagen sie einen neuen BLL für jede Anwendung. Mit dem Layout der Anwendung oben, kann man argumentieren, dass der Back-End-Prozessor und die Website eine Anwendung Handeln in Einklang ist, oder zwei Anwendungen mit unterschiedlicher Business-Logik. Was wäre der ideale Weg, dies zu umgehen? Habe es wie ein System handeln, oder zwei?

War es hilfreich?

Lösung

Eine Sache, die ich nahm, während MVC in den letzten paar Jahren lernen ist der Unterschied zwischen dem, was ich der Anwendungslogik und Domain-Logik nennen. Ich mag es nicht, den Begriff Business-Logik mehr, weil es zu viel Gepäck von allen widersprüchlichen Theorien und Praktiken hat, die diesen Begriff zu locker verwendet haben.

Domain-Logik ist die „traditionelle“ Business-Logik, wie die Dinge sollen handeln, was sie benötigen (Validierung), usw. Anwendungslogik ist alles, was zu einer bestimmten Präsentation Ihrer Domain spezifisch ist, dh wenn der Benutzer diese anklickt Submit-Button in Ihrem Web-App dann sie auf diese Seite gerichtet sind hier über (beachten sie, dass dies hat nichts zu tun, wie eine WinForms-Anwendung oder ein Hintergrund-Prozessor funktionieren würde). Anwendungslogik sollte in Ihrer Anwendung lebt. Domain-Logik sollte in Ihrem BLL lebt und niedriger, und in den verschiedenen Anwendungen wiederverwendbar sein, die Ihre gemeinsame „Business-Logik“ verwenden können.

Art einer allgemeinen Antwort, aber ich hoffe, das hilft.

Andere Tipps

Sie betrachten könnte die Funktionalität Partitionierung der Organisation der Akteure zu reflektieren. Normalerweise, wenn Sie zwei unterschiedliche Organisationsgruppen haben, dann Entwicklung und Verwaltung Anforderungen sind leichter zu verwalten, wenn die Funktionalität ähnlich aufgetrennt wird. Und umgekehrt.

Die meisten von uns verbringen nicht so viel Zeit mit dem Schreiben von Anwendungen, die die äußeren Grenzen der Hard- und Software-Funktionen erkunden.

Wenn Sie Ihre Bedenken zu trennen und dann denke ich, dass Sie in der Lage sein werden, sie als die gleiche Anwendung mit einer einzigen Business-Logik-Schicht zu sehen, gibt es keinen Punkt zweimal den gleichen Code zu schreiben. Der Trick wird die Trennung von Bedenken zwischen den Benutzerschnittstellenabschnitten der Website und der Business-Logik in Ihrer BLL Bibliothek sein zwingen.

Performance wird ein Thema auch sein, müssen Sie sicherstellen, dass die Stapelverarbeitung Ihre Website nicht von der Durchführung von Aufgaben nicht blockiert, die es aufgrund Ihrer Ressourcen ausführen muss. Dies kann ein Argument sein, um sie zu halten, mehr getrennt, aber als sie wahrscheinlich eine Datenbank sowieso (oder eine andere Datei-basierte Ressource) teilen, dann kann das ein Problem sein, unabhängig.

würde ich eine gemeinsame Business-Logik-Bibliothek stets auf dem Schnittstellen programmiert und vollständig von Ihrem anderen Anliegen getrennt.

Der „Ideal“ Weg, dies zu tun, hängt von dem Projekt bei der Hand und die verschiedenen Anforderungen des Systems.

Mein Standardentwurf ist, um es als eine App haben zu handeln. Aber wenn es mehr Schwergewichts-Prozesse statt, Ich mag ein Chargieren zu schaffen, in dem der Parameter des angeforderten Jobs gespeichert und wirkte auf einem separaten Prozess.

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