Erstens, bevor jemand betrogen schreit, fiel es mir schwer, es in einem einfachen Titel zusammenzufassen. Ein anderer Titel könnte gewesen sein "Was ist der Unterschied zwischen einem Domänenmodell und einem MVC-Modell?" oder "Was ist ein Modell?"
Konzeptionell verstehe ich unter einem Modell die Daten, die von den Ansichten und dem Controller verwendet werden. Darüber hinaus scheint es sehr unterschiedliche Meinungen darüber zu geben, was das Modell ausmacht. Was ist ein Domain-Modell im Vergleich zu einem App-Modell, einem Ansichtsmodell, einem Servicemodell usw.
In einer kürzlich gestellten Frage zum Repository-Muster wurde mir beispielsweise direkt mitgeteilt, dass das Repository Teil des Modells ist. Ich habe jedoch andere Meinungen gelesen, dass das Modell vom Persistenzmodell und der Geschäftslogikschicht getrennt werden sollte. Soll das Repository-Muster die konkrete Persistenzmethode nicht vom Modell entkoppeln? Andere Leute sagen, dass es einen Unterschied zwischen dem Domänenmodell und dem MVC-Modell gibt.
Nehmen wir ein einfaches Beispiel. Der AccountController, der im MVC-Standardprojekt enthalten ist. Ich habe mehrere Meinungen gelesen, dass der enthaltene Kontocode von schlechtem Design ist, gegen SRP verstößt usw. usw. Wenn man ein "richtiges" Mitgliedschaftsmodell für eine MVC-Anwendung entwerfen würde, welches wäre das?
Wie würden Sie die ASP.NET-Dienste (Mitgliedschaftsanbieter, Rollenanbieter usw.) vom Modell trennen? Oder würdest du überhaupt?
So wie ich es sehe, sollte das Modell "rein" sein, vielleicht mit Validierungslogik. Es sollte jedoch von den Geschäftsregeln (außer der Validierung) getrennt sein. Angenommen, Sie haben eine Geschäftsregel, nach der jemand per E-Mail benachrichtigt werden muss, wenn ein neues Konto erstellt wird. Das gehört aus meiner Sicht nicht wirklich zum Modell. Wo gehört es hin?
Möchte jemand Licht in dieses Thema bringen?