2011-07-25 4 views
2

J'ai vu beaucoup de blog sur MVVM vs MVC et les blogs qui disent que MVVM est comme l'extension MVC dans Windows. J'ai un problème de conception, j'ai fait une application gagnante qui utilise MVVM, maintenant je dois créer une même application sur le Web, j'ai donc décidé de MVC pattern dans Asp.net, mais maintenant je suis coincé au point .Resume ViewModel dans Asp.net MVC

comment réutiliser ViewModels dans MVC? parce que ViewModel a importé l'espace de noms System.Windows.Input.

Y a-t-il des alternatives? Ma principale exigence est la réutilisation de la logique d'application?

J'ai utilisé le framework WpfApplication http://waf.codeplex.com/ comme réfrence.

Merci d'avance.

Répondre

5

Le fait est que les deux ne sont pas interchangeables. Ils ne sont pas censés être (dans un sens pratique). Oui, vous pouvez créer ViewModels qui peut également être réutilisé dans ASP.NET MVC. Mais la quantité d'abstraction que vous auriez à incorporer rendrait l'exercice inutile.

Vous ne devriez pas perdre votre temps à vous inquiéter de cette incompatibilité, en travaillant dur pour la réduire/l'éliminer.

Ce que vous devez faire est de déplacer le code vraiment réutilisable qui n'a pas de dépendances soit WPF ou ASP.NET dans les bibliothèques réutilisables. Ce code est ce qui devrait être réutilisé dans les deux applications. Vos ViewModels et contrôleurs appartiennent aux frameworks d'application pour lesquels ils ont été conçus.

2

Votre logique métier doit figurer dans vos modèles, et non dans vos modèles View. Donc, ce sont les modèles que vous voulez réutiliser, rien d'autre. Les modèles de vue sont spécifiques à votre application Windows et sont équivalents aux contrôleurs spécifiques à une application Web.

+1

@Will Désolé, cela devrait être "logique métier". Dans ce cas, je serais d'accord avec votre logique commerciale de post-utilisation, mais n'essayez pas de réutiliser la logique applicative. –

+0

Jusqu'ici, c'est le meilleur conseil que j'ai trouvé sur ce sujet, mais comment gérez-vous le partage du modèle sur différentes plateformes sans dupliquer leurs définitions pour gérer des choses comme la validation et la sérialisation avec des annotations et des attributs de données? J'espérais les définir en un seul endroit (modèle) et les réutiliser ne trouverait aucune information sur la meilleure façon de le faire. des idées ou des ressources sur ce sujet? – SelAromDotNet

+0

@Josh Je ne sais pas trop ce que vous recherchez, mais pour partager le modèle, mettez-le dans son propre projet et réutilisez-le. Les annotations de données et les attributs de sérialisation sont conçus pour être indépendants de la plate-forme, c'est-à-dire que les règles pour un modèle valide seront les mêmes, donc déclarez-les sur votre modèle. Où et comment vous validez dépend de la technologie, déclenchez ainsi la validation à partir de votre application hôte. –

Questions connexes