MVVM est un modèle de conception Microsoft qui existait avant ASP.NET MVC. Quelqu'un peut-il passer en lumière sur les différences entre MVVM et le nouveau modèle MVC? p>
4 Réponses :
Je vous aventuerais de suggérer que MVVM est le modèle de conception de Microsoft et ASP.NET MVC, qui est récemment récent, est une implémentation spécifique de Microsoft (qui ne correspond pas nécessairement à MVC ou à MVVM, mais est similaire). Et comme suggéré par Reed, MVC existe depuis les années 70. P>
MVC & MVVM sont des modèles architecturaux. MVC a ses racines de retour à Smalltalk. ASP.NET MVC est la mise en œuvre de Microsoft du modèle MVC à l'aide de la structure ASP.NET. p>
Les deux modèles traitent de la séparation des préoccupations. MVC est davantage à voir avec l'interaction de différentes couches couramment utilisées dans une application comme modèle (couche de données), vue (couche de présentation) et contrôleur (couche logique commerciale). p>
Avec des capacités de base de données avancées de WPF et de Silverlight, MVVM était plus adaptée et publiée comme la prochaine grande chose. Martin Fowler a généralisé ces modèles comme schémas de présentation dans son livre d'architecture d'applications d'entreprise. P>
Un avantage que je vois à l'aide d'un point de vue est qu'il vous permet de tester mieux le code de l'application en utilisant des tests d'unité. Pour cette raison, je trouve MVVM ou au moins le peu de mentions de menu de la vue étant utilisée assez souvent dans les applications ASP.NET MVC également. P>
Yeah ViewModel existe également dans ASP.NET MVC. Ne pouvons-nous pas intégrer les mêmes capitalérités avancées de Silverlight avec la couche de présentation en MVC ?. Je me demandais simplement comment l'une de l'extérieur est l'autre dans le développement de l'application Web.
Quelqu'un peut-il jeter la lumière sur les différences entre MVVM et le nouveau modèle MVC?. p> blockQuote>
Oui: Lorsque vous utilisez ASP.NET MVC, le motif MVC utilise le contrôleur pour rendre le modèle directement dans la vue. Ceci est parfaitement acceptable pour des projets triviaux avec un petit nombre d'objets. Lorsque cela peut devenir un problème, c'est que les préoccupations de la couche d'interface utilisateur peuvent être saignées au modèle sous-jacent (domaine). P>
Lorsque vous utilisez MVVM, vous ajoutez une abstraction entre le modèle et la vue, ce qui est bien sûr la viewmodel. Cela permet à l'auteur de projeter dans l'affichage d'un objet qui est le plus facilement consommé par la vue. Le point de vue peut contenir des choses qui seraient disponibles dans le modèle (domaine). Le coût associé ici est que vous devez disposer de la logique de mappage qui transpose les données du modèle au modèle de vue. Des outils tels que MOWORAPPPER peuvent aider à cette corvée. P>
Un exemple simple de cela pourrait être le modèle ne nécessite pas certains champs au besoin, mais une vue particulière. Plutôt que de cuire cette logique dans l'interface utilisateur, si elle est attachée à la vue de la vue, les autres interfaces d'interface utilisateur peuvent consommer le même VM sans avoir à dupliquer la logique cuit à la première interface utilisateur. p>
MVC et MVVM sont en fait assez différents. Il semble y avoir un peu de malentendu de MVVM lorsqu'il a parlé avec ASP MVC. La pratique consistant à faire des "modèles de vue" en MVC, qui sont des classes spécifiques à la vue sur l'aliment, tandis que la bonne pratique n'est pas fidèle à l'esprit de MVVM et n'est en fait qu'une version plus propre de MVC. p>
MVVM est plus adapté au bureau à l'aide de WPF ou similaire, ou purement dans le navigateur à l'aide d'un cadre JavaScript tel que knockout.js. Le motif est assez différent de MVC et implique des vues "souscrites" au modèle. P>
MVC (utilisable en dehors de la dernière mise en œuvre ASP.NET MVC I>) prédame MVVM par une longue et longue période ... Voir: EN.Wikipedia.org/wiki/Model-View-Controller
Édité pour indiquer spécifiquement que c'est Microsoft ASP.NET MVC. Je sais que MVC Predaate MVVM mais ASP.NET MVC est un successeur de MVVM même si MVVM est basé sur MVC lui-même.