Je suis d'avis que les applications sont si différentes les unes des autres et que notre compréhension de la manière dont les applications doivent être rédigées est encore très limitée. Les applications Windows Forms sur lesquelles j'ai travaillé étaient si différentes les unes des autres. Certaines des différences de conception que j'ai constatées sont (y compris la plupart des combinaisons):
- Parlez directement à la base de données (2 niveaux)
- Utiliser un backend qui a été écrit pour l'application donnée (3 niveaux)
- Utilisez un ensemble de services Web qui ont été écrits pour être utilisés par de nombreuses applications et qui ne peuvent pas être modifiés pour votre application. (Architecture orientée services)
- Mises à jour effectuées par les opérations CRUD
- Mises à jour effectuées avec le modèle de commande (envoi de commandes au serveur backend)
- De nombreuses utilisations de la liaison de données / aucune utilisation de la liaison de données
- La plupart des données sont «comme des tableaux» (par exemple les factures) qui fonctionnent bien dans les contrôles de grille standard / nécessitent des contrôles personnalisés pour la plupart des données de l'interface utilisateur.
- Un développeur / équipes de 10 ou 20 développeurs (uniquement sur l'interface utilisateur)
- Beaucoup de tests unitaires utilisant des simulations, etc. / pas de tests unitaires
Par conséquent, je ne pense pas qu'il soit possible de créer une implémentation de MVC (ou MVP) qui s'adapte toujours bien.
Les meilleurs articles que j'ai vus expliquant vraiment MVC et pourquoi un système MVC est construit comme il est, sont la série "Build Your Own CAB" de Jeremy D Miller . Après avoir travaillé, vous devriez être en mesure de mieux comprendre vos options.
Les conseils de Microsoft Smart Client (CAB / Microsoft Composite Application Block) doivent également être pris en compte. C'est un peu complexe, mais cela peut bien fonctionner pour des applications bien adaptées.
La sélection d'une implémentation MVC / MVP pour un projet Winforms donne un aperçu qui vaut la peine d'être lu. Beaucoup de gens aiment PureMVC . Je ne l'ai jamais utilisé, mais je le regarderais la prochaine fois que j'aurais besoin d'un framework MVC.
« Presenter First » est une approche de développement logiciel qui combine les idées du modèle de conception Model View Presenter (MVP) et le développement piloté par les tests . Il vous permet de commencer par rédiger des tests dans la langue du client. Par exemple:
"Lorsque je clique sur le bouton" Enregistrer ", le fichier doit être enregistré et l'avertissement de fichier non enregistré doit disparaître."
Je n'ai aucune expérience de l'utilisation de «Presenter First», mais je vais essayer quand j'en aurai l'occasion, car cela semble très prometteur.
D'autres questions sur Stack Overflow que vous voudrez peut-être examiner sont ici et ici .
Si vous envisagez d'utiliser WPF à tout moment, jetez un œil au modèle Model-View ViewModel (MVVM) . Voici une très bonne vidéo que vous devriez regarder: Jason Dolinger sur Model-View-ViewModel .
Le modèle de conception MVVM (Model View View Model) pour Winforms offre une autre option qui peut faciliter la conversion en WPF si nécessaire. Magical.Trevor est encore un autre exemple MVVM pour Windows Forms qui inclut également la liaison automatique basée sur les noms de propriété.
Demandez-vous également pourquoi vous utilisez MVC.
- Souhaitez-vous pouvoir tester le plus de code possible?
- Essayez-vous d'autoriser autant de code que possible à être réutilisé?
- Essayez-vous de rendre votre base de code facile à comprendre?
- 101 autres raisons qui peuvent être valables pour un projet donné.
Une fois que vous êtes clair sur vos objectifs , il devient plus facile de choisir une mise en œuvre ou une autre.