Dies ist wie die Frage, was der Unterschied zwischen einem Apfel und einem Apfelkern ist. Diese beiden Architekturen ersetzen sich nicht gegenseitig. Ich denke , eine genauere Ansicht ist , dass die 3-Tier - Architektur erweitert MVC.
Die MVC-Architektur
Modelle: Diese repräsentieren "Zeug" in Ihrer Anwendung. Diese Schicht ist in den letzten Jahren etwas verschwommen, wie ich später erklären werde.
Ansichten: Die Benutzeroberfläche. Die Sache, mit der der Benutzer interagiert.
Controller: Der Programmiercode, der auf den Benutzer und auf Änderungen in der Modellebene reagiert
Die 3-Tier-Architektur
Mit der dreistufigen Architektur haben Sie Ebenen mit unterschiedlichen Verantwortlichkeiten.
Benutzerdienste: (oder "Dienste" im Allgemeinen) In dieser Ebene geht es mehr darum, das Abrufen und Ändern der Ebene "Modell" zu koordinieren. Hier werden komplexe, mehrstufige Aktionen ausgeführt
Business Layer: Dies sind die Geschäftsregeln, die in den Programmcode eingraviert sind. Was "The Business" will, wird in dieser Ebene durchgesetzt.
Datenzugriffsschicht: Eine oder mehrere Klassen, die für den Zugriff auf einen persistenten Datenspeicher verantwortlich sind.
Der einzige Teil der dreistufigen Architektur, der sich mit MVC überschneidet, ist die "Business Layer". Die "Modelle" in MVC und die "Business Layer" in 3-Tier-Architektur versuchen, dasselbe Ziel zu erreichen.
Das "M" in MVC ist verschwommen
Die "Modell" -Schicht in MVC wurde in den letzten Jahren erweitert. Nach dem, was ich gesehen habe, gibt es zwei, möglicherweise drei Arten von Modellen:
Domain-Modelle: Diese repräsentieren die "Dinge", die "The Business" interessieren - die Business Domain. Diese Klassen enthalten Daten und alle Prozeduren, die mit diesen Daten arbeiten, um Geschäftsregeln durchzusetzen. Häufig sind Domänenmodelle an Tabellen in einer Datenbank gebunden. Dies scheint zur "Business Layer" der 3-Tier-Architektur zu passen.
Ansichtsmodelle: Dies sind Klassen, mit denen die Daten aus den Domänenmodellen in etwas umgewandelt werden, das für die Ansicht schmackhafter ist. Dies passt nirgendwo in die 3-Tier-Architektur, da Ansichtsmodelle weder Geschäftslogik implementieren noch irgendeine Art von Service oder Datenzugriff bieten.
Geschäftsmodelle: In komplexen Anwendungen besteht die Notwendigkeit, das Domänenmodell von der Geschäftslogik zu entkoppeln. Die Geschäftsmodelle enthalten Daten und Prozeduren, die mit diesen Daten arbeiten, um Geschäftsregeln zu implementieren, und die Domänenmodelle werden in "Property Bags" verwiesen - Objekte, die nur Daten enthalten, aber kein Verhalten enthalten. Domänenmodelle werden zu einer anderen Form des Datenübertragungsobjekts zwischen der Datenbank und der Anwendung.
Nirgendwo in MVC wird der Datenzugriff erwähnt. In einigen Fällen werden Sie feststellen, dass der Datenzugriff zur "Modell" -Ebene von MVC gehört, die, wie wir gesehen haben, keine eindeutige Ebene mehr ist. Ich sehe wirklich , dass eine dreistufige Architektur mit MVC gepaart wird , um eine ganze Anwendung zu erstellen. Das eine erweitert oder verbessert das andere:
- Modelle
- Domänenmodelle (MVC / 3-Tier)
- Modelle anzeigen (MVC)
- (optional) Geschäftsmodelle (MVC / 3-Tier)
- Ansichten (MVC)
- Controller (MVC)
- Datenzugriff (3-Tier)
- Dienstleistungen (3-Tier)
Es gibt einige Schnittpunkte, die jedoch weitgehend voneinander getrennt sind und zusammen zum Entkoppeln und Isolieren verschiedener Komponenten eines größeren Systems verwendet werden.