Existe-t-il une référence étape par étape facile à MVVM?
Oui il y a. Jetez un oeil à ici.
MVVM est-il un super-ensemble ou un sous-ensemble de MVC?
MVVM appartient à la famille MVC, donc, si vous pouvez le dire, c'est un sous-ensemble. C'est une variante pour dissocier l'interface utilisateur de la logique métier en dessous. Je le décrirais comme un frère de MVC. Depuis les premiers jours de la POO, les gens ont cherché des moyens de dissocier l'interface utilisateur de leur logique. MVC a été le premier archétype à évoluer. C'est assez simple, bien que la plupart des gens ne réussissent pas. La vue n'est qu'un observateur du modèle et l'appelle si nécessaire. Le contrôleur n'est qu'une stratégie permettant à la vue de communiquer avec le modèle, par exemple lorsque vous avez besoin d'un comportement échangeable (par exemple ReadonlyController, AdminController). MVC est un grand succès et c'est vraiment une bonne pratique de l'appliquer.
MVVM est un type de modèle MVP spécialisé , tel que décrit par Martin Fowler . MVP essaie de garder la vue aussi stupide que possible (tout en acceptant les commentaires des utilisateurs, etc.), améliorant ainsi la testabilité. Il vise une abstraction de la vue et de la logique d'interaction qui est de mettre dans le présentateur. Le présentateur communique uniquement avec le modèle / la logique métier et met à jour la vue. Martin Fowler décrit à peu près MVVM dans son modèle de présentation.
La vue est complètement abstraite dans un ViewModel. Lorsque vous avez View
besoin d'une propriété, ViewModel
vous devez également l'avoir. Il (le ViewModel) est censé être complètement indépendant de la technologie d'interface utilisateur sous-jacente, une abstraction. Afin de communiquer entre View et ViewModel, un modèle de synchronisation doit être utilisé (c'est-à-dire Observer). Ce n'est pas facile à réaliser dans un environnement Web sans état. MVVM diffère de MVP, car la vue ne se lie plus à votre modèle / logique métier mais à un ViewModel à la place.
Quel modèle est moderne et lequel dois-je choisir pour les versions Windows et Web de mon application?
Le modèle de présentation (de type MVVM) devrait en théorie être complètement indépendant de la technologie d'interface utilisateur utilisée. Cependant, l'aspect de synchronisation doit être couvert. Cela peut facilement être fait en se liant aux commandes et propriétés avec WPF, où la colle de synchronisation est déjà présente. Avec ASP.NET, c'est une autre histoire. Cependant, il y a un article sur CodeProject qui utilisait le modèle de modèle de présentation avec toutes les technologies d'interface utilisateur Windows. Regarde.
Votre intention d'utiliser les mêmes classes pour l'interface utilisateur basée sur ASP.Net et WPF n'est pas très pratique. La liaison de données et l'utilisation de javascript sur le web sont très différentes de WPF. La seule option à laquelle je peux penser est MVP avec une vue complètement passive . En théorie, vous pouvez avoir le même présentateur qui remplit une page Web et WPF.
Dans la pratique, je développerai une architecture où la plupart des règles métier se trouvent dans une couche de service Web et deux niveaux de présentation différents avec le moins de règles métier possible qui parlent avec ce service Web.
la source