MVC / MVP / MVVM Qu’est-ce que c’est?

J’ai récemment travaillé sur un projet .Net WPF pour créer un système de sharepoint vente où j’ai utilisé le modèle MVP pour la première fois. Il m’a fallu un peu de temps pour comprendre le changement d’approche, mais une fois que j’ai fait ça, j’ai pensé que le concept avait basculé!

Ma question est la suivante: quelle est la distinction entre MVC, MVP et MVVM? S’il y a une distinction claire, existe-t-il des lignes direcsortingces indiquant quand vous devriez utiliser un modèle plutôt qu’un autre?

Si quelqu’un peut donner des conseils à ce sujet ou indiquer un article qui explique les différences, je l’apprécierais beaucoup.

Le Guide d’architecture d’application de Microsoft décrit MVC et MVP et explore les différences entre les deux.

http://www.codeplex.com/AppArch

Cet article MSDN décrit MVVM et son évolution.

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Il peut être difficile de comprendre les différences entre les modèles en examinant un modèle particulier mis en œuvre dans un cadre particulier. Cet article de msdn WPF MVVM fait référence aux articles originaux de Martin Fowler qui expliquent un schéma en tant qu’approche générale:

En 2004, Martin Fowler a publié un article sur un modèle nommé Presentation Model (PM) […] qui considère MVVM comme une spécialisation du modèle PM plus général, conçu sur mesure pour les plates-formes WPF et Silverlight.

Donc, pour comprendre les différents modèles, il est utile de regarder les descriptions de Martin Fowler des différentes approches. Son modèle de vue passive est l’approche MVP. Son modèle de contrôleur est l’approche MVC. Son modèle de présentation est l’approche MVVM. Cet article plus ancien traite de l’évolution de tels modèles.

Cela peut également aider à examiner les implémentations dans différentes langues. L’article Implémenter des modèles d’interface graphique basés sur des événements à l’aide de la structure Java AJAX ZK met en contraste les trois modèles de Martin Fowler mentionnés ci-dessus dans une structure Java moderne. Même si c’est un langage différent et un framework différent de WPF, il peut être utile de voir le modèle plutôt que l’implémentation du modèle pour le voir dans un autre langage.