Ich entwickle seit vielen Jahren Unternehmensanwendungen mit .Net. Meine Apps verfügen normalerweise über ein Domänenmodell, das Entitäten enthält, die SQL DB-Tabellen zugeordnet sind. Ich verwende ein Repository-Muster, eine Abhängigkeitsinjektion und eine Serviceschicht.
Vor kurzem haben wir begonnen, an MVC 3-Projekten zu arbeiten, und wir hatten eine Debatte darüber, wo welche Logik platziert werden soll. Ich bin auf eine dünne Controller / FAT-Modellarchitektur gestoßen und habe mich gefragt, wie die Service-Schicht dazu passen würde
Option 1 - Modellgespräche mit Diensten
Controller ist dünn, ruft Methoden für die Modelle auf. Die Modelle "wissen", wie sie sich selbst aus der Datenbank laden und mit Repositorys oder Diensten kommunizieren können. Zum Beispiel hat customerModel eine Load (id) -Methode und lädt den Kunden und einige untergeordnete Objekte wie GetContracts ().
Option 2 - Controller spricht mit Diensten
Der Controller fordert die Dienste auf, Modellobjekte abzurufen. Die Logik des Ladens / Speicherns usw. befindet sich in der Serviceschicht. Das Modell ist ein reines Entitätsmodell mit nur Daten.
Warum sollte Option 1 eine bessere Wahl sein, insbesondere wenn wir über Unternehmensanwendungen sprechen? Meine Erfahrung zeigt mir, dass ich Bedenken trennen, Modelle UND Controller so dünn wie möglich halten und spezialisierte Services haben muss, die die Geschäftslogik ausführen (imkl. Die DB-Interaktion).
Vielen Dank für alle Ratschläge und Hinweise auf gute Ressourcen.