L'Architecture pour les applications WinForms?

J'ai commencé un projet WinForms il y a quelques semaines et que je ne savais pas vraiment ce que les caractéristiques que je voulais, j'ai juste ajouté le long de la route. Maintenant cela a provoqué un horrible gâchis où mon MainForm est une grosse boule de boue et où, par exemple, d'importantes modifications de l'état sont déclenchées par des éléments de l'INTERFACE utilisateur pour le point que je dois appeler l'Événement OnChange de Contrôle afin de changer certaines de l'état dans la base de données.

En bref: je viens de commencer un nouveau projet où je veux prendre une meilleure approche. Je ne sais pas ce qui serait le "bon". Dans ASP.net MVC, j'ai trouvé le Modèle MVVM vraiment utile, mais sur le Bureau, MVVM semble être conçu uniquement pour WPF, pas pour WinForms.

L'autre approche est l'un des trois niveaux de l'architecture: j'ai ma Base de données de Classe qui s'exprime actuellement directement à l'INTERFACE utilisateur. Je vais maintenant créer une nouvelle Classe Statique ("ApplicationState") qui parle à la base de données et déclenche des événements pour dire l'INTERFACE utilisateur "Hey, quelque Chose de changé!". L'INTERFACE utilisateur de manipuler l'État qui prendra alors en charge la base de données de persistance et de nouveau lever des Événements si l'INTERFACE utilisateur doit mettre à jour. Le point ici est que la ApplicationState classe ne modifie jamais l'INTERFACE utilisateur directement, mais que l'INTERFACE utilisateur s'abonne aux Événements. Que semble comme un propre/"MVC-y" manière de faire, mais peut-être que je suis surplombant quelque chose ici?

Fondamentalement, mon but ultime serait d'avoir l'INTERFACE utilisateur complètement indépendant de la couche de base de données juste pour s'assurer que je n'ai pas de fil dans une logique d'entreprise dans l'INTERFACE utilisateur de nouveau.

OriginalL'auteur Michael Stum | 2009-08-24