Frage

Nun, da jeder über MVC spricht, merke ich, dass die Geschäftsregeln nicht angesprochen. In den alten Tagen der 3-Tier-Architektur wurden die Geschäftsregeln in der Mittelschicht. Wo fallen sie in der neuen MVC?

War es hilfreich?

Lösung

Auf dem ersten Pinsel, ich würde sagen, dass sie in dem Modell gehören. Die MVC Eintrag auf Wikipedia zustimmen scheint: „In MVC, stellt das Modell der Informationen (Daten) der Anwendung und die Geschäftsregeln verwendet, um die Daten“zu manipulieren. Immerhin von ‚Geschäftsregeln‘ wir die funktionalen Algorithmen und Logik bedeuten, die die Domäne kodieren, die Ihre Anwendung mit beteiligt ist, im Gegensatz zu Ein- / Ausgabebezogene Logik. Dieses Kerngeschäft bezogene Logik nicht -. Oder sollte Änderung NOT- auf dem, was den Benutzer angezeigt wird (das ist die Domäne des View ist) oder die Benutzereingabe (die in erster Linie durch die Steuerung empfangen wird)

Nach meiner Erfahrung, diese Art von Frage zu stellen war während des Software-Entwicklungsprozesses sehr aufschlussreich: wir eine große Anzahl von Dingen gefunden, die berücksichtigt wurden ‚Geschäftsregeln‘ von einigen Leuten, aber stellte sich heraus, etwas anderes zu sein. Wenn es nicht um eine echte Geschäftsregel ist, kann es nicht zum Modell gehört.

Andere Tipps

Der Grund, warum Sie nie MVC-Adresse „Business Rules“ sehen ist, dass MVC im Großen und Ganzen ist ein Präsentationsmuster. Es konzentriert sich auf, wie Ihre Anwendung zu strukturieren. Das Modell, kann beispielsweise als Präsentationsmodell gedacht werden. Das Modell der Anwendung, die die Sicht dann macht.

Um jedoch das Präsentationsmodell zu erstellen, müssen Sie in der Regel auf Ihre Domain-Modelle gehen, wo alle Ihre Business-Logik lebt. An diesem Punkt nicht diktieren, MVC, wo dieser Code physisch lebt. Ist es auf einer anderen Ebene? MVC ist es egal.

Geschäftsregeln immer im Modell leben. Das Modell ist das Bit, das Sie mit einem völlig anderen UI resuse könnten. Die Aussicht ist offensichtlich völlig abhängig von UI Entscheidungen und die Steuerung hat Daten aus dem Modell zu nehmen und den Blick sagen, es zu machen.

Putting Business-Logik in der Ansicht ist schlecht, weil es die Struktur der Präsentation verbindet.

Putting Geschäftslogik in die Steuerung ist schlecht, weil es Ihr Unternehmen Domain zwischen den Daten teilt durch das Modell und die Regeln in der Steuerung beibehalten.

Ein Zitat aus einer Wikipedia Artikeln :

MVC wird häufig in Web-Anwendungen zu sehen, wo die Sicht die eigentliche HTML-Seite ist, und der Controller ist der Code, die dynamischen Daten und erzeugt den Inhalt innerhalb des HTML sammelt. Schließlich ist das Modell durch den tatsächlichen Inhalt dargestellt wird, in der Regel in einer Datenbank oder in XML-Knoten gespeichert, und die Geschäftsregeln , die diese Inhalt Aktionen basierend auf Benutzer verwandeln.

Gibt es einen Grund, warum Sie MVC und nTier mischen kann nicht? Unsere Anwendung macht genau das. Unsere Controller sind für die Datenvalidierung und entscheiden, welches Business Layer Anrufe zu tätigen.

OurApp.Web - Asp.net MVC-Projekt
OurApp.Business - Business Layer Bibliothek
OurApp.DataAccess - Data Layer Bibliothek
OurApp.Entities - Grundsätzlich sind alle die von allen Schichten geteilt ‚Modelle‘

Geschäftsregeln sollten im Modell, nicht die Steuerung. Die Steuerung und die Aussicht ist Teil der Präsentationsschicht.

Das Modell der Domäne der Entitäten und Funktionalität darstellt ..

Der Regler ist nur ein Manager für die Aufnahme von Benutzereingaben und Anfragen, die Durchführung von Aktionen in / auf dem Modell und die Abbildung, dass auf Ansichten in der Präsentationsschicht. Der Controller ist nicht nur ein Vermittler entweder die Ansicht oder die Steuerung auf das Modell wirken kann.

Dies ist eine alte Zeit geschrieben Frage, aber Ich mag ein Repository Regeln vollständig von jedem Teil einer Anwendung, unabhängig zu sein. Mehrere Anwendungen, mehrere Implementierungen eines Business-Tier sollte eine statische Rendering eines Business-Regel-Repository zugreifen können. Einfache Trennung Entscheidungen wie diese machen eine Migration von Desktop -.> Web, zum Beispiel, trivial

In meiner Architektur, Ansicht -> Modell -> Regler -> Business Tier -> Regeln Repository, dh die Steuerung greift auf grobe Daten, wie durch die Business-Tier / Schicht dargestellt, führt es das Modell, das es mit Massagen in eine vorzeigbare Form und die Ansicht passiv zeigt sie an. Das Business-Tier, die sie über jedes Präsentationsformat wiederverwendbar, muß explizite Regeln und Zugang zu einem Subsystem mit impliziten Regeln. Mit dem Design, ist jede Komponente unwissend über die Details einer Komponente über ihm.

Ich denke, die Frage eine Frage der Definition. Es scheint mir, dass die Logik für die Darstellung der Bildschirm in der benötigten Reihenfolge ein Controller Problem ist, und ich habe einige Projekte gesehen, der einen Regel-Engine verwenden, um die Reihenfolge zu bestimmen, und welche Eingaben vom Benutzer benötigt wird. Dies ist nicht das gleiche wie Geschäftsregeln imho.

Ihr seid falsch sind die Geschäftsregeln innerhalb der Steuerung leben und nicht das Modell ...

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