MVVM, l'Unité, le Prisme, le MEF, Caliburn - Que dois-je utiliser?
S'il vous plaît aidez - je suis perdu!
Je suis en train d'écrire une petite application de bureau qui a certains contrôles et certains d'écran. Ce devrait par la suite être intégré à un petit site web, ayant aussi certains écrans. L'idée est de permettre à l'utilisateur d'éditer des vidéos et sélectionnez des images, puis de partager leurs résultats avec ses amis.
L'application de bureau est à l'aide de C# WPF, le site web - ASP.Net MVC.
J'ai lu que la croissance de la demande au-delà de quelques écrans serait plus facile en utilisant MVVM. Donc j'ai fait une recherche et découvert Caliburn.Micro et MVVM.La lumière. J'ai téléchargé quelques tutoriels mais, juste comme je me préparais à la plongée dans la matière, j'ai trouvé ici, sur S. O. qu'il y a aussi Prisme, MEF, d'Unité, de ReactiveUI - C'est à devenir beaucoup trop!
Je suis terrible à apprendre de nouvelles choses - Il m'âges à l'étude de WPF et ASP.Net MVC. Je ne veux pas apprendre beaucoup de nouveau matériel seulement pour découvrir plus tard que c'est pas pertinente. Et je n'ai pas d'architecte à m'instruire.
Donc ma question est: Pourriez-vous mettre ces cadres et des technologies de la perspective, et suggèrent je devrait se concentrer sur l'étude et l'utilisation (de l'esp. ce qui peut être utilisé plus tard avec Windows 8)?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez construire une application MVVM (dont vous n'avez probablement pour divers avantages), puis vous voulez un framework MVVM.
Je recommanderais Caliburn.Micro, car il est simple à mettre en œuvre suivant les exemples sur la Caliburn.Micro page de documentation. Il dispose également d'un très convaincante convention over configuration mécanisme, et utilise un Actions système à l'invocation de verbes (méthodes) sur les modèles de vue à partir de la vue. C'est plus fort que tout autre mécanisme que j'ai vu.
Prisme est un poids lourd de cadre, qui comprend des éléments de MVVM conception pour aider à la mise en œuvre, ainsi que d'être particulièrement adaptées à créer des applications composites (les applications qui sont construits de découplée des composants à l'intérieur d'un hébergement shell).
MEF est utile pour ces types d'applications qui ont besoin de découvrir des plugins ou extensions de l'application (même après l'application a démarré), et peut être utilisé avec un framework MVVM comme Caliburn.Micro. MEF peut également être utilisé pour la mise en œuvre de l'inversion de contrôle, mais ne fournit pas de quelques-unes des principales caractéristiques qui se retrouvent dans d'autres inversion de contrôle des conteneurs, de sorte que vous pouvez décider de ne l'utiliser que pour mettre en œuvre plugin fonctionnalité.
L'unité est un conteneur IoC, et serait utilisé pour mettre en œuvre l'injection de dépendance pour votre application générale de l'infrastructure. Il y a beaucoup de Cio conteneurs dans le .NET espace de bien, dont certains offrent des performances améliorées, des fonctionnalités supplémentaires, ou une plus respectueux de l'API.
Je ne sais pas à propos de ReactiveUI que je ne l'ai pas utilisé.
Si vous parlez de la maximisation de la réutilisation de code pour un déménagement à WinRT, puis MVVM est un excellent choix.
PRISME incluent déjà le MEF et MVVM logique 🙂
Ok peu d'explication ici:
MVVM stand pour logique dans votre application. Effectivement manière astucieuse de découplage de Vue-Modèle et Modèle. Ne connais pas de meilleur (?) cadre de le faire - vous pourriez vérifier Catel si vous voulez ou MVVM Light mais il a juste des tonnes de code à partir de quelqu'un qui comprends le MVVM logique et la rendre facile à mettre en œuvre. Tu pourrais essayer d'écrire votre propre framework MVVM et de voir qu'il n'y a pas de secret ingrédient " - tout de même la répétition du code et les mêmes classes, etc... en Fait vous n'avez pas besoin tout MVVM cadre de mise en oeuvre MVVM.
Une fois que vous apprendre et écrire MVVM vous lancer immédiatement dans la question - Comment je test NUnit dans découplage façon (ce n'est pas anodin problème dans Silverlight par exemple) - donc, ici, tous les CIO/Injecter cadre entrent en jeu. Par exemple MEF. Envisager de suivre l'exemple de comprendre une grande image sur l'Injecter cadre:
Projet "Partagée", écrit 'moins délimiteur' (par exemple Bibliothèque Portable)
Projet "Main", référence "Partagée" projet
Projet 'Fournisseur', référence "Partagée" projet
Vous voir - il n'y a pas de référence directe entre les "Principaux" et "Implementator les projets de tous "magie" se passe dans MEF/de l'Unité de construction/résoudre processus. Donc, vous pouvez facilement exécuter NUnit test sur la main sans l'aide de 'Responsable de projet" et "Responsable" par "la main". Il y a aussi un scénario où d'autres projets pourraient mettre en œuvre et à l'exportation 'IAmSharedInterface spécialement à des fins de test.
Donc, retour à PRISME - il en avoir du tout (!) c'. Je sais que c'est pas facile cadre pour comprendre tout de suite et il n'est pas adapté pour un simple 'Bonjour le Monde' programmes, mais une fois que vous apprendre - il n'y a pas de chemin de retour. Il a juste de la colle toutes les pièces ensemble et vous donner grand degré de liberté dans l'utilisation de tout ce moq cadre que vous souhaitez (par exemple Rhino).
Prisme de développement de Microsoft (je l'espère), il sera pris en charge non seulement dans Windows 8, mais dans Windows 9 et dans toutes les versions futures.
Ce que vous avez demandé tout à l'intérieur: MVVM, Injecter, découpler/plugins, facile à lire et à tester
Pour enregistrer ajoutant les informations détaillées ci-dessus, je vais tenter de rendre la vie facile pour vous.
1) Pour l'instant, oublier CIO /de l'Injection de Dépendances /architecture de Plugin. Vous dites que vous êtes en train de créer une application simple, afin de l'oublier pour l'instant. Gardez votre code de rangement, et vous pouvez mettre en œuvre ce plus tard si nécessaire (c'est bien tout ça).
2) des cadres que vous avez énumérées, je suggérerais de Caliburn.Micro. C'est relativement simple et léger. Il ne vous faudra pas longtemps pour se lever et courir.
3) Créer votre modèle dans un ensemble distinct que vous pouvez utiliser pour votre application windows et de votre site web MVC.
Rester simple et de ne pas s'enliser avec toutes les technologies.
Cette réponse reproduit certains abrégée des morceaux de Rockford Lhotka de l'article du Blog de "en Utilisant le pattern MVVM a besoin d'un cadre" qui a été cité dans une autre réponse.
C'est une sorte de méta-réponse à cette question (même si elle contient une recommandation spécifique), mais il semble très utile pour expliquer le rôle d'un cadre de MVVM en premier lieu.
(Texte copié en ligne pour des raisons de conservation.)