Après trois mois d'efforts pour parvenir à un accord, la Commission européenne a décidé de mettre en place un système de gestion de l'information. secteur d'activité (LOB) sur WPF, j'en suis arrivé à envisager de revenir à Windows Forms pour mon projet, et en recherchant les opinions d'autres personnes, je suis tombé sur ce fil de discussion...
Oui, WPF est une technologie brillante et ses avantages vont bien au-delà du simple plaisir des yeux... les capacités de templating et de binding en sont d'excellents exemples. L'ensemble du modèle d'objet offre une plus grande flexibilité et des possibilités plus étendues. Cela n'en fait pas pour autant la plate-forme de référence pour les futures applications LOB.
Les "problèmes" que WPF résout en termes de séparation de l'interface graphique et de la logique commerciale ne sont pas des problèmes qui ne peuvent pas être facilement résolus dans Windows Forms en commençant simplement avec l'architecture et l'état d'esprit adéquats. Même les capacités de liaison par chemin d'objet de WPF peuvent être reproduites dans Windows Forms avec quelques classes d'aide très simples. Les capacités du modèle de données de WPF sont très intéressantes, mais encore une fois, il n'y a rien que vous ne puissiez simuler dans Windows Forms dans les rares occasions où vous ne savez absolument pas quels objets vous allez représenter sur une partie donnée de l'écran.
C'est en termes de maturité que Windows Forms prend de l'avance. Vous ne pouvez pas faire un tour sur Google sans tomber sur un blog où quelqu'un a résolu un problème lié à Windows Forms. WPF, quant à lui, a comparativement moins de ressources d'apprentissage disponibles, moins de contrôles personnalisés disponibles, et n'a pas eu autant de problèmes de démarrage résolus.
La maturité de l'environnement de développement doit être au cœur de la décision entre WPF et Windows Forms. Les éditeurs de Windows Forms sont simples, réactifs et intuitifs. Le retour d'information sur les erreurs est instantané, les solutions sont généralement évidentes et le cycle compilation->débogage->édition dans Windows Forms est très rapide.
Les applications WPF, en revanche, ont un support de conception relativement pathétique, la vue de conception étant trop prête à se dégonfler à la première erreur, ce qui nécessite souvent la construction d'un projet après la correction avant que le concepteur ne soit prêt à intervenir à nouveau. Le glisser-déposer de composants à partir de la boîte à outils pourrait tout aussi bien ne pas être pris en charge, étant donné le grand nombre de circonstances dans lesquelles il ne fonctionne pas du tout ou produit des résultats totalement non intuitifs. Malgré la promesse du WpfToolkit, il n'existe toujours pas de DataGrid utilisable pour WPF qui permette d'obtenir des performances raisonnables ou de faciliter la conception.
Le débogage des applications WPF ressemble un peu à l'application ancien Paradigme de débogage ASP.NET... hit F5 -> attendre -> lancer -> erreur -> arrêter -> réparer -> frapper F5 -> attendre -> lancer -> erreur -> gémir -> arrêter -> réparer -> frapper F5 .... Tous les XAML que votre programme exécute sont verrouillés, et la recherche de problèmes spécifiques aux XAML est souvent fastidieuse.
En résumé, les outils de développement pour Windows Forms vous permettront de créer des applications frontales en une fraction du temps nécessaire à une application WPF... en particulier si vous créez des grilles maître-détail ou des interfaces de type tableur, ce qui est le cas de la plupart des LOB. Avec Windows Forms, 90 % du travail est déjà fait pour vous.
Je suis un grand fan de l'architecture WPF. J'aimerais juste que l'ensemble des outils de conception ne ressemble pas à une construction de débogage pré-alpha.
Edit : This answer was posted about .NET 3.5 + Visual Studio 2008, but .NET 4.0 with Visual Studio 2010 ships with a WPF data grid. Bien que de nombreuses améliorations aient été apportées à la nouvelle expérience de développement WPF, ma réponse reste inchangée et j'aimerais ajouter la suggestion suivante :
Si vous êtes pressé de faire RAD optez pour Windows Forms. Si vous cherchez à produire une application bien architecturée, maintenable, évolutive, gourmande en ressources et multi-utilisateurs, envisagez ASP.NET MVC + HTML 5 + jQuery... Les projets que j'ai menés avec ces technologies ont abouti à de meilleurs résultats, plus rapidement, pour mes clients. MVC offre tous les mêmes modèles que WPF, et jQuery permet des animations et des interactions complexes. Plus important encore, une solution ASP.NET MVC + jQuery n'exige pas de vos utilisateurs finaux qu'ils disposent d'ordinateurs de bureau modernes dotés d'un matériel graphique décent.