Il y a donc beaucoup de modèles de conception différents dans ce domaine.
- Présentateur de vue de modèle (mvp)
- Présentation de la vue du modèle (mvvp)
- Modèle Vue Contrôleur
- Modèle 2
etc. Au fil des ans, ceux-ci ont été entrelacés, mélangés, modifiés et appliqués dans une grande variété de contextes. Le point important ici, c'est que le modèle de conception MVC de 1977 a beaucoup changé et n'est plus le modèle de conception utilisé par les cadres Web côté serveur. À titre d'exemple dans l'implémentation smalltalk d'origine, le modèle observerait la vue des changements, ce qui n'est plus le cas car le côté serveur ne peut tout simplement pas observer les éléments html dans le navigateur des utilisateurs. Au lieu de cela, si la vue change, la vue enverra une demande au contrôleur qui mettra alors à jour la vue. Encore une fois, l'implémentation MVC d'origine n'est pas suivie, car une mise à jour du modèle impliquerait que toutes les vues dépendantes du modèle seraient mises à jour.
Les frameworks web modernes suivent une architecture simple à trois niveaux également connue sous le nom d'architecture Model 2.
Il existe bien sûr des exemples de véritables architectures MVC sur le Web, mais celles-ci sont souvent côté client uniquement, connectées à un serveur qui suit l'architecture Model 2, car les vues sont xml et json, et ne sont pas observées pour les modifications. Des exemples d'architectures mvc pures côté client sont Sencha Touch et Sproutcore.
Si vous avez MVC dans le navigateur, mvc comme sur le serveur et mvc comme couche de données, vous avez une implémentation mvc hiérarchique.
Remarque. Je n'ai parlé que des frameworks Web, d'autres implémentations de MVC telles que java swing et Flex ont d'autres différences d'implémentation.