Premièrement, avant que quiconque crie dupe, j'ai eu du mal à le résumer dans un simple titre. Un autre titre aurait pu être "Quelle est la différence entre un modèle de domaine et un modèle MVC?" ou "Qu'est-ce qu'un modèle?"
Conceptuellement, je comprends qu'un modèle est les données utilisées par les vues et le contrôleur. Au-delà de cela, il semble y avoir beaucoup d'opinions divergentes sur ce qui compose le modèle. Qu'est-ce qu'un modèle de domaine, par rapport à un modèle d'application, par rapport à un modèle de vue, par rapport à un modèle de service, etc.
Par exemple, dans une question récente que j'ai posée sur le modèle de référentiel, on m'a dit à bout portant que le référentiel faisait partie du modèle. Cependant, j'ai lu d'autres opinions selon lesquelles le modèle devrait être séparé du modèle de persistance et de la couche de logique métier. Après tout, le modèle Repository n'est-il pas censé découpler la méthode de persistance concrète du modèle? D'autres personnes disent qu'il existe une différence entre le modèle Domain et le modèle MVC.
Prenons un exemple simple. AccountController inclus avec le projet par défaut MVC. J'ai lu plusieurs opinions selon lesquelles le code de compte inclus est de mauvaise conception, enfreint le SRP, etc. etc. Si l'on devait concevoir un modèle d'adhésion "approprié" pour une application MVC, quel serait-il?
Comment sépareriez-vous les services ASP.NET (fournisseur d'appartenance, fournisseur de rôle, etc.) du modèle? Ou le feriez-vous du tout?
À mon avis, le modèle devrait être "pur", peut-être avec une logique de validation .. mais devrait être séparé des règles métier (autres que la validation). Par exemple, disons que vous avez une règle métier qui stipule qu'une personne doit recevoir un e-mail lors de la création d'un nouveau compte. Cela n'a pas vraiment sa place dans le modèle à mon avis. Alors, à quoi appartient-il?
Quelqu'un souhaite-t-il faire la lumière sur cette question?