Je développe une application avec le modèle MVVM, mais j'ai atteint un point où je dois choisir quel framework utiliser.
Parmi les options possibles figurent:
- MVVM Toolkit
- Fondation MVVM
- Cadre d'application WPF (WAF)
- MVVM léger
- Caliburn
- Sangler
- Prisme
- ReactiveUI
D'après votre expérience, quelle est la meilleure?
wpf
mvvm
frameworks
Rangel
la source
la source
Réponses:
Cela dépend vraiment de ce que vous essayez de réaliser et de la quantité d'infrastructure que vous souhaitez déjà en place, ainsi que de la facilité avec laquelle vous pouvez trouver des échantillons qui vous aideront. Je vais déclarer un intérêt ici, car j'ai été activement impliqué dans au moins un framework MVVM, et j'ai eu des commentaires sur d'autres via le groupe WPF Disciples, donc je suis un peu biaisé. Cela dit, voici:
Microsofts MVVM Toolkit - il est encore très en phase alpha. Quand il a été initialement publié, il a fallu un peu de sauvage aux Disciples à cause de ce qu'il n'a pas fait. Cela dit, MS cherche à renforcer ce cadre, il est donc à surveiller - il n'est tout simplement pas encore prêt.
MVVM Foundation - ah Josh Smith version du cadre. Josh est l'un des papas de MVVM, et a été un grand défenseur et enseignant du modèle. En conséquence, une grande partie de ce que vous trouverez dans d'autres cadres a les empreintes digitales de Josh partout. Ce cadre est destiné à fournir les bases de MVVM, et non à résoudre certains des problèmes les plus ésotériques. À l'origine, cela n'était destiné qu'à WPF, mais des gens tels que Laurent Bugnion et moi-même ont ajouté des fonctionnalités / projets qui signifient que ce sera également un cadre compatible Silverlight.
WAF - aucune expérience, donc je ne peux pas en parler, j'ai peur.
MVVM Light - la version de Laurent Bugnion et juste mise à jour vers la version 2. C'est un très bon framework, mais encore une fois il n'est pas destiné à couvrir tous les aspects des applications MVVM. Compte tenu des antécédents de Laurent, il dispose d'un support Silverlight et Blendability très solide.
Mise à jour Laurent vient de m'informer que les versions .NET 3.5 et .NET 4.0 sont compatibles avec les fonctionnalités. Wau aller Laurent.
Cinch - l'excellent framework MVVM de Sacha Barber uniquement MVF. Cela couvre plus de terrain que les cadres dont j'ai parlé ci-dessus. C'est un excellent cadre, et tire parti des concepts couverts dans l'excellent projet Onyx de Bill Kempf . Onyx est destiné à compléter les frameworks MVVM et ajoute des fonctionnalités généralement difficiles à réaliser dans MVVM / WPF. Encore une fois, initialement destiné à être uniquement WPF, Onyx a progressé pour inclure la compatibilité SL - travail auquel je suis particulièrement fier d'avoir participé.
Prisme - Encore une fois, je ne l'ai jamais utilisé, mais j'ai entendu beaucoup de bonnes choses à ce sujet.
Océan - Karl Shifflett, responsable de programme au sein de l'équipe Cider, a récemment publié un framework WPF MVVM complet. Encore une fois, c'est un excellent cadre et a beaucoup à recommander.
L'essentiel est de télécharger les différents cadres, de les consulter et de déterminer celui qui correspond le mieux à votre façon de penser et à vos besoins. Si vous pensez que vous souhaiterez peut-être prendre en charge Silverlight à partir de la même base de code, les cadres WPF uniquement doivent être actualisés.
la source
J'ai trouvé cet article très utile http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Pour que je l'apporte ici pour les utilisateurs à venir
Je mets à jour la section Cinch et ajoute le support silverlight à ses fonctionnalités
Je suis désolé pour la longue histoire
Caractéristiques communes:
Sangler
MVVM Light Toolkit
Assistants MVVM
Fondation MVVM
Caliburn
Onyx
Calcium
nRoute
Nito MVVM
Océan
Framework MVVM de base
Bonne lumière
la source
J'essaie de décrire les cadres manquants dans la grande réponse de Pete:
MVVM Toolkit (Microsoft) est une bibliothèque très légère avec des modèles de projet Visual Studio qui devraient prendre en charge les débutants avec ce modèle. Si Microsoft obtient de bons commentaires pour leur boîte à outils, ils pourraient l'implémenter comme un nouveau modèle de projet Visual Studio (peut-être 2010).
Prism (Microsoft p & p) est un framework qui fournit plus que la prise en charge du modèle MVVM. L'objectif principal de ce projet est de vous aider à construire des applications modulaires WPF et / ou Silverlight. Lorsque vous avez juste besoin d'implémenter le modèle MVVM ou que vous êtes un débutant en .NET / WPF, je ne recommanderai pas ce projet. Voir aussi: Lien .
WPF Application Framework (WAF) est un cadre léger qui vous aide à créer des applications WPF avec MVVM. C'est juste pour WPF et donc il ne prend pas en charge Silverlight. Cela va un peu plus loin que la plupart des autres frameworks MVVM avec l'introduction des contrôleurs . Ils sont responsables du flux de travail de l'application et assurent la médiation entre les différents ViewModels.
la source
Meh. Mvvm n'a pas vraiment besoin d'un framework complet pour supporter IMO. Si vous comprenez le concept, il est assez simple de commencer avec une classe de base de machine virtuelle propre qui implémente INotify, et de continuer à partir de là.
la source
Regardez aussi:
Caliburn & Onyx !
la source
Mélangez le vôtre!
J'ai utilisé EventAggregator de PRISM, avec ViewModelBase de MVVM Foundation et ainsi de suite. J'ai également modifié le RelayCommand (DelegateCommand appelé à certains endroits) pour accepter d'autres données aussi, et ainsi de suite.
Je ne recommanderais pas un seul cadre en soi.
la source
mon pari sera sur Caliburn et MVVMlight, il semble que peu de ces frameworks mvvm supportent silverlight. Je peux prévoir qu'il y aura plus de frameworks MVVM parmi lesquels choisir que les frameworks IoC, car il est plus difficile de configurer la limite des fonctionnalités du framework mvvm. Je suppose que la meilleure façon de déterminer celle qui convient le mieux à votre projet sera de répertorier / comparer leurs fonctionnalités.
Consultez également Mix10. J'apprends beaucoup de la conférence: construire votre framework mvvm.
la source
Également framework Cocktail et DevForce par Ideablade
la source
J'utilise Prism et j'aime ça. L'une des grandes choses pour moi était qu'il y aurait d'autres personnes qui pourraient m'aider si nécessaire et de bons exemples. Une fois que vous avez exécuté les bases, il y a tout un tas d'extensions dont vous aurez besoin pour votre application et c'est tellement plus facile lorsque vous travaillez avec le même framework que les autres.
la source
Dans l'ensemble, je suis à 90% dans mon application et tout ce que j'ai utilisé de MVVM Toolkit est la fonction d'usine qui crée une commande pour moi, étant donné une fonction de délégué à lancer dans Execute. Je pense que je pourrais passer à n'importe quel autre cadre ou à aucun cadre en quelques heures.
la source
Un autre à considérer est MEFedMVVM . Je l'ai utilisé sur quelques projets et il est léger, non intrusif et prend en charge Silverlight et WPF. Il est également capable de prendre en charge les données de conception dans Blend, pour ceux qui utilisent ce produit.
la source
Si vous recherchez l'extensibilité (la possibilité d'écrire des compléments) au-dessus d'un cadre d'application WPF / MVVM, alors vous pouvez être intéressé par la clause de non-responsabilité de SoapBox Core : je l'ai écrite . Il est open source, donc même si vous ne l'utilisez pas, il pourrait y avoir de bonnes idées pour vous. Il utilise MEF pour l'extensibilité et l'IoC.
la source
Il y a aussi nRoute
Un cadre d'application vraiment sympa pour WPF / Silverlight qui prend en charge MVVM
la source