J'essaie actuellement de faire tourner la tête MVVM pour WPF - je ne veux pas dire mettre la tête autour du concept, mais autour des écrous et boulons réels de faire quoi que ce soit qui soit plus hors des sentiers battus que CRUD stupide.
Ce que j'ai remarqué, c'est que beaucoup de frameworks, et la plupart / tous les articles de blog datent d'âges.
Est-ce parce que c'est désormais un vieux chapeau et que les blogueurs sont passés à la Next Big Thing, ou simplement parce qu'ils ont tout dit?
En d'autres termes, y a-t-il quelque chose qui me manque ici?
Réponses:
MVVM n'est pas obsolète, mais il a été surestimé pour commencer. Je ne l'ai jamais aimé et cela m'a gardé trop longtemps dans WinForms; à défaut de voir la forêt pour les arbres, j'ai jeté le bébé avec l'eau du bain. Je reçois WPF maintenant, et j'ai l'idée de ne pas vouloir mélanger le code avec le balisage, mais je préfère le style Android de coller le balisage en un seul endroit et de le déréférencer avec des transtypages dans mon code (ce que vous pouvez également faire dans WPF, même bien qu'il n'ait jamais été tendance à le faire pour une raison quelconque).
De cette façon, vous gagnez un contrôle plus fin et vous n'avez pas à vous soucier de toute la manipulation "inchangée" partout. Je pense que c'est en fait plus testable parce que les tests ne l'attraperont pas toujours si vous manquez un événement "onchanged".
Vous perdez un peu de "déclarative", ce qui semble être une tendance de nos jours (par exemple, si deux widgets sont mappés à la même valeur, dans MVVM, vous pouvez simplement le faire, alors qu'avec le code impératif, vous devez définir les deux individuellement) . Mais même avec MVVM, cela ne fonctionne que dans le cas subalterne. Si un widget doit afficher le journal d'un autre widget, vous devez écrire un autre gestionnaire et un autre événement "onchanged" et vous finirez par avoir à étirer la définition de "déclarative" pour dire qu'il en est ainsi.
Mise à jour 2015
WPF MVVM était (r) évolutif pour l'époque. Tout comme WPF. Mais ils avaient tous les deux leurs verrues. Plain WPF en avait trop intégré (en plus il était construit sur XML), et c'était une sorte de douleur à gérer. (Vraiment, si WPF venait d'adopter une approche plus "bibliothèque" plutôt qu'une approche "framework", cela aurait pu se transformer en quelque chose de vraiment cool et tout l'univers technologique pourrait être entièrement différent maintenant). L' idée de MVVM était géniale, mais essayer d'intégrer un MVVM dans WPF était quelque peu hacky car 1) C # ne pouvait pas vraiment l'exprimer sans beaucoup de passe-partout, et 2) les reliques WinForms comme les popups modaux étaient toujours répandues idéologiquement mais ne pouvaient pas être facilement représenté dans MVVM. Ainsi, tout était nul.
Cela dit, c'est toujours la seule option réaliste sur Windows lorsque vous avez besoin de transparence ou de GPU pour les applications LOB.
React a bien sûr rendu MVVM obsolète. J'ai été déçu que VS2015 n'ait pas de compteur natif à cela. Pour l'instant, nous sommes toujours bloqués à l'aide de WPF brut (ce qui est OK, mais semble vieux (se sent vraiment aussi vieux que winforms maintenant), et n'a pas une tonne de fonctionnalités intégrées (ressemble à un projet cool mais abandonné) ou avec-MVVM, qui à ce stade se sent comme beaucoup de frais généraux pour rien, car même un bon MVVM (angulaire 1) a été exposé pour ses lacunes.
J'éviterais WPF MVVM. C'est une couche supplémentaire, et personne ne s'en soucie plus.
la source
Tout compte fait, il y a une limite à ce que vous pouvez faire avec un framework MVVM.
Ils sont "terminés" car WPF n'a pas évolué depuis que Microsoft l'a publié. S'il y avait des mises à jour de la technologie, les bibliothèques auraient également besoin d'une mise à jour. Cela ne s'est pas produit.
la source