La logique métier ne doit pas être contenue dans les contrôleurs. Les contrôleurs doivent être aussi maigres que possible, idéalement suivre le motif:
- Rechercher une entité de domaine
- Agir sur l'entité de domaine
- Préparer les données pour afficher / renvoyer les résultats
De plus, les contrôleurs peuvent contenir une logique d'application.
Alors, où dois-je mettre ma logique métier? Dans Model.
Qu'est-ce que le modèle? Voilà une bonne question. Veuillez consulter l'article Microsoft Patterns and Practices (félicitations à AlejandroR pour l'excellente trouvaille). Ici, il y a trois catégories de modèles:
- Modèle de vue : il s'agit simplement d'un sac de données, avec une logique minimale, le cas échéant, pour transmettre les données depuis et vers les vues, contenant une validation de champ de base.
- Modèle de domaine : modèle Fat avec logique métier, fonctionne sur une ou plusieurs entités de données (c'est-à-dire l'entité A dans un état donné que l'action sur l'entité B)
- Modèle de données : modèle prenant en charge le stockage, la logique contenue dans une seule entité ne concerne que cette entité (c'est-à-dire si le champ a, alors le champ b)
Bien sûr, MVC est un paradigme qui se décline en différentes variétés. Ce que je décris ici, c'est que MVC n'occupe que la couche supérieure, voyez cet article sur Wikipedia
Aujourd'hui, MVC et MVP (Model-View-Presenter) sont des modèles de conception de séparation des préoccupations qui s'appliquent exclusivement à la couche de présentation d'un système plus grand. Dans des scénarios simples, MVC peut représenter la conception principale d'un système, atteignant directement la base de données; cependant, dans la plupart des scénarios, le contrôleur et le modèle dans MVC ont une dépendance lâche sur un service ou une couche / niveau de données. Tout est question d’architecture client-serveur