Le premier de tous :
Je pense que vous mélangez le modèle MVC et les principes de conception basés sur les n-tiers.
L'utilisation d'une approche MVC ne signifie pas que vous ne devez pas superposer des couches dans votre application.
Il peut être utile de considérer MVC comme une extension de la couche de présentation.
Si vous placez du code non lié à la présentation à l'intérieur du modèle MVC, vous risquez très vite de vous retrouver avec une conception compliquée.
C'est pourquoi je vous suggère de placer votre logique d'entreprise dans une couche d'entreprise distincte.
Il suffit de jeter un coup d'œil à ceci : Article de Wikipédia sur l'architecture multi-niveaux
Il est écrit :
Aujourd'hui, le MVC et les modèles similaires de type modèle-vue-présentateur (MVP) sont des modèles de séparation des préoccupations qui s'appliquent exclusivement à l'interface utilisateur. couche de présentation d'un système plus large.
Quoi qu'il en soit, lorsque l'on parle d'un application web d'entreprise les appels de l'interface utilisateur à la logique métier doivent être placés dans le contrôleur (de présentation).
En effet, le contrôleur gère les appels à une ressource spécifique, interroge les données en faisant appel à la logique commerciale et relie les données (modèle) à la vue appropriée.
Mud vous a dit que les règles de gestion sont intégrées dans le modèle.
C'est également vrai, mais il a confondu le modèle (de présentation) (le "M" de MVC) et le modèle de la couche de données d'une conception d'application basée sur des niveaux.
Il est donc valable de placer votre entreprise liée à la base de données règles dans le modèle (couche de données) de votre application.
Mais vous ne devez pas les placer dans le modèle de votre couche de présentation structurée en MVC, car cela ne s'applique qu'à une interface utilisateur spécifique.
Cette technique est indépendante de l'utilisation d'une conception axée sur le domaine ou d'une approche basée sur des script de transaction.
Permettez-moi de visualiser cela pour vous :
Couche de présentation : Modèle - Vue - Contrôleur
Couche commerciale : Logique du domaine - Logique de l'application
Couche de données : Référentiels de données - Couche d'accès aux données
Le modèle que vous voyez ci-dessus signifie que vous avez une application qui utilise MVC, DDD et une couche de données indépendante de la base de données.
Il s'agit d'une approche courante pour la conception d'une application web d'entreprise de grande envergure.
Mais vous pouvez aussi le réduire à une simple couche métier non DDD (une couche métier sans logique de domaine) et à une simple couche de données qui écrit directement dans une base de données spécifique.
Vous pouvez même abandonner toute la couche de données et accéder à la base de données directement à partir de la couche métier, bien que je ne le recommande pas.
[Note :] Vous devez également être conscient du fait qu'il existe aujourd'hui plus d'un "modèle" dans une application. En général, chaque couche d'une application possède son propre modèle. Le modèle de la couche de présentation est spécifique à la vue mais souvent indépendant des contrôles utilisés. La couche métier peut également disposer d'un modèle, appelé "modèle de domaine". C'est généralement le cas lorsque vous décidez d'adopter une approche axée sur le domaine. Ce "modèle de domaine" contient des données ainsi qu'une logique commerciale (la logique principale de votre programme) et est généralement indépendant de la couche de présentation. La couche de présentation appelle généralement la couche métier lors d'un certain "événement" (bouton enfoncé, etc.) pour lire ou écrire des données dans la couche de données. La couche de données peut également avoir son propre modèle, qui est généralement lié à la base de données. Il contient souvent un ensemble de classes d'entités ainsi que des objets d'accès aux données (DAO).
La question est la suivante : comment cela s'intègre-t-il dans le concept MVC ?
Réponse -> Ce n'est pas le cas !
En fait, c'est un peu le cas, mais pas complètement.
En effet, MVC est une approche qui a été développée à la fin des années 1970 pour le langage de programmation Smalltalk-80. À cette époque, les interfaces graphiques et les ordinateurs personnels étaient peu courants et le World Wide Web n'avait même pas encore été inventé ! La plupart des langages de programmation et des IDE actuels ont été développés dans les années 1990. À cette époque, les ordinateurs et les interfaces utilisateur étaient complètement différents de ceux des années 1970.
Vous devez garder cela à l'esprit lorsque vous parlez de MVC.
Martin Fowler a écrit un très bon article sur MVC, MVP et les interfaces graphiques d'aujourd'hui.