D'abord, avant que quelqu'un ne crie au dupe, j'ai eu du mal à le résumer en 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 ?".
D'un point de vue conceptuel, je comprends qu'un modèle est constitué des 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 constitue 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 répondu sans ambages 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 de référentiel n'est-il pas censé découpler la méthode de persistance concrète du modèle ? D'autres personnes disent qu'il y a une différence entre le modèle de domaine et le modèle MVC.
Prenons un exemple simple. Le AccountController qui est inclus dans le projet MVC par défaut. J'ai lu plusieurs avis selon lesquels le code Compte inclus est de mauvaise conception, viole le SRP, etc. etc. Si l'on devait concevoir un modèle d'adhésion "correct" pour une application MVC, quel serait-il ?
Comment séparer les services ASP.NET (fournisseur de membres, fournisseur de rôles, etc.) du modèle ? Ou le feriez-vous tout court ?
Selon moi, le modèle doit être "pur", peut-être avec une logique de validation, mais il doit être séparé des règles métier (autres que la validation). Par exemple, disons que vous avez une règle de gestion qui dit que quelqu'un doit être envoyé par e-mail quand un nouveau compte est créé. À mon avis, cela n'a pas vraiment sa place dans le modèle. Alors où doit-elle se trouver ?
Quelqu'un peut-il nous éclairer sur cette question ?