Comment voulez-vous mettre en œuvre MVC dans une application Windows Forms?
Je ne développe pas trop de bureau /les applications Windows Forms, mais elle avait eu lieu pour moi qu'il peut y avoir une certaine utilité à l'aide de la MVC (Modèle-Vue-Contrôleur) pour Windows Forms .NET développement.
Quelqu'un a mis en œuvre MVC dans les Windows Forms? Si oui, avez-vous des conseils sur la conception?
- Vous pouvez obtenir une meilleure réponse si vous pouvez ajouter plus de détails à votre question. Par exemple, quel est votre modèle de composant? Une base de données ou de fichiers persistant ou quoi? Je suis en supposant que le point de vue de la partie sera de formes simples, mais peut-être vous voulez dire? Des détails qui font une question plus facile à traiter.
Vous devez vous connecter pour publier un commentaire.
Ce que j'ai fait dans le passé est d'utiliser quelque chose de similaire, Model-View-Presenter.
[NOTE: Cet article a utilisé pour être disponibles sur le web. Voir maintenant, vous aurez besoin de télécharger le CHM, puis afficher les propriétés de fichier et cliquez sur Débloquer. Ensuite, vous pouvez ouvrir le CHM et trouver l'article. Merci un million de dollars, Microsoft! soupir]
La forme est le point de vue, et j'ai une IView interface. Tout le traitement se passe dans le présentateur, qui est juste une classe. Le formulaire crée un nouveau présentateur, et passe lui-même, en tant que présentateur du IView. De cette façon, pour les tests, vous pouvez passer d'un faux IView à la place, puis envoyer des commandes à partir de la présentatrice et de détecter les résultats.
Si je devais utiliser un véritable Modèle-Vue-Contrôleur, je suppose que je devrais faire de cette façon:
Cela correspondrait à le classique schéma MVC. Le plus grand inconvénient est que, avec les événements, il peut être difficile de dire qui est en vous abonnant à ce que. Le modèle MVP utilise des méthodes à la place d'événements (au moins la façon dont je l'ai mis en œuvre). Lorsque le formulaire/vue déclenche un événement (par exemple, someButton.Cliquez sur), la forme simplement appelle une méthode sur le présentateur pour exécuter la logique pour elle. La vue et le modèle n'ont pas de connexion directe à tous; ils ont tous les deux de passer par le présentateur.
Bien, en fait, Windows Forms met en œuvre un "free-style" version de la MVC, à l'instar de certains films mettre en œuvre certaines de merde "free-style" de l'interprétation de certains livres classiques (Roméo & Juliette viennent à l'esprit).
Je ne dis pas que Windows Forms mise en œuvre est mauvais, c'est juste... différent.
Si vous utilisez Windows Forms et bonne programmation orientée objet, les techniques, et peut-être un ORM comme EntitySpaces pour votre base de données access, vous pourriez dire que:
Bien qu'ayant à la fois la Vue et le Contrôleur représentés par le même objet de faire la séparation du code à partir de la représentation chemin plus difficile (il n'y a pas de moyen facile de brancher un "GTK+ vue", dans une classe dérivée à partir de Microsoft.De Windows.Les formulaires.Le formulaire).
Ce que vous pouvez faire, si vous êtes assez prudent. Est de garder votre code de formulaire complètement séparé de votre contrôleur/modèle de code par écrit seulement GUI choses liées par les gestionnaires d'événements, et tous les autres de la logique métier dans une catégorie distincte. Dans ce cas, si vous avez toujours voulu utiliser GTK+ pour écrire une autre couche de la Vue, vous n'aurez besoin que de réécrire le code de la GUI.
Windows Forms n'est pas conçu à partir du sol jusqu'à l'utilisation de MVC. Vous avez deux options.
Tout d'abord, vous pouvez rouler votre propre mise en œuvre de la MVC.
Deuxièmement, vous pouvez utiliser un framework MVC conçu pour les Windows Forms.
Le premier est simple, pour commencer à faire, mais le plus vous obtenez, plus complexes, il est. Je vous suggère la recherche d'un bien préexistant et bien testé, framework MVC conçu pour fonctionner avec Windows Forms. Je crois ce blog est un bon point de départ.
Pour quiconque de commencer, je vous suggère de sauter Windows Forms et le développement de contre WPF, si vous en avez la possibilité. C'est un bien meilleur cadre pour la création de l'INTERFACE utilisateur. Il existe de nombreux frameworks MVC cours d'élaboration pour WPF, y compris cette une et que l'on.
Selon Microsoft, l'UIP Bloc d'Application mentionné par @jasonbunting est "archivés". Au lieu de cela, regardez la Smart Client Bloc D'Application ou de la, même les plus récents Smart Client Software Factory, qui prend en charge les WinForms et WPF SmartParts.
Vérifier dans le Interface Utilisateur Processus (UIP) Bloc d'Application. Je ne sais pas grand-chose, mais il était regardé il y a quelques années. Il peut y avoir des versions plus récentes, vérifier autour.
"L'UIP Bloc d'Application est basée sur le modèle-vue-contrôleur (MVC)."
Prendre un coup d'oeil à la MS des Pratiques et Modèles de Smart Client bloc d'application qui dispose de certaines des orientations et des classes qui vous guideront dans la mise en œuvre d'un model view presenter crépitement dans les windows forms - jetez un oeil à l'application de référence inclus.
Pour WPF c'est superseced par le prism projet
Le logiciel usines approche est un excellent moyen d'apprendre les meilleures pratiques