47 votes

Lors de la création d'une nouvelle interface graphique, le choix de WPF est-il préférable à celui de Windows Forms ?

La plupart des restrictions et des astuces liées aux formulaires Windows sont communes à la plupart des programmeurs. Mais depuis .NET 3.0, il existe également WPF, la Windows Presentation Foundation. Il est dit que vous pouvez rendre les "applications sexy" plus faciles grâce à elle et avec .NET 3.5 SP1, elle a bénéficié d'un bon coup de pouce en termes de vitesse d'exécution.

Mais d'un autre côté, beaucoup de choses fonctionnent différemment avec WPF. Je ne dirai pas que c'est plus difficile, mais il faut tout apprendre à partir de zéro.

Ma question : Cela vaut-il la peine de passer ce temps supplémentaire lorsque vous devez créer une nouvelle interface graphique et qu'il n'y a pas de pression temporelle sur le projet ?

148voto

Mark Points 5924

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.

84voto

Mark Points 5924

Cela fait sept mois que j'utilise WPF sur ce qui est devenu un système de base pour mon client, et j'aimerais partager avec vous quelques réflexions supplémentaires sur l'expérience de l'apprentissage et de l'utilisation de WPF en tant que plate-forme de présentation pour les entreprises.

D'une manière générale, les commentaires que j'ai faits plus haut restent valables... La prise en charge du temps de conception pour WPF n'est pas encore disponible. Si vous êtes pressé de sortir une application client riche, optez pour Windows Forms. Point final. Microsoft n'est pas pressé d'abandonner la plateforme GDI / Windows Forms, vous pouvez donc compter sur un bon support pour un bon moment dans le futur.

WPF n'est pas facile à maîtriser mais ce n'est pas là que vous devriez prendre la décision d'investir ou non votre temps et votre énergie dans l'apprentissage de WPF. Malgré son manque de maturité actuel, WPF est construit autour de concepts utiles et modernes.

Dans WPF, par exemple, votre investissement dans des objets commerciaux bien écrits et dotés d'une logique de validation solide est un investissement solide. Contrairement à Windows Forms, la liaison de données de WPF regorge de fonctionnalités qui permettent aux contrôles d'interface de réagir aux saisies non valides de l'utilisateur sans écrire le code de l'interface graphique pour détecter ces erreurs. C'est précieux.

Les capacités de stylisme et de modélisation de WPF se sont également révélées précieuses. En dépit de l'idée fausse selon laquelle le stylisme et le templating ne servent qu'à créer des effets visuels à l'écran, la vérité est que ces fonctionnalités simplifient considérablement le codage d'une interface utilisateur qui fournit un retour d'information riche - comme les boutons qui se désactivent ou s'activent en fonction de l'état de la couche logique sous-jacente, ou les infobulles qui trouvent intelligemment leur texte en fonction de l'état de l'objet placé sous le curseur, etc.

Tous ces éléments s'ajoutent à des fonctionnalités incroyablement précieuses pour "rien de fantaisiste" applications commerciales Ils permettent simplement de maintenir l'interface en adéquation avec les données sous-jacentes.

En bref :

  • Dans Windows Forms, vous concevez votre utilisateur puis vous écrivez le code pour piloter cette interface utilisateur, qui comprend généralement comprend également du code pour piloter vos objets de données.
  • Dans WPF, vous investissez dans la couche métier qui gère vos objets de données, puis vous concevez une interface qui écoute à vos objets de données.

Il s'agit d'une différence apparemment subtile, mais qui fait une énorme différence dans votre capacité à réutiliser le code... ce qui soulève la question : "La question Windows Forms vs WPF est-elle réellement une décision d'investissement ?"

(Il semble que ce sujet soit devenu mon fil préféré).

74voto

Ray Burns Points 38537

Existe-t-il des raisons impérieuses d'utiliser WPF ?

Absolument ! WPF est absolument incroyable ! Il sera un avantage majeur pour pratiquement n'importe quel projet parce qu'il a tellement de fonctionnalités et de capacités que Windows Forms n'a pas.

Pour les applications professionnelles, les gains les plus importants seront les suivants :

  • La liaison des données et la création de modèles font la plus grande différence. Une fois qu'un modèle de données décent est en place, il suffit de quelques clics pour créer un modèle de données et utiliser la fonction Mélange d'expression pour configurer exactement l'aspect de votre objet par glisser-déposer. La liaison avec des éléments tels que la couleur ou la forme est triviale.
  • L'agencement de l'écran est incroyablement flexible. Non seulement tout dans WPF peut s'adapter en douceur aux changements de taille et de forme des conteneurs, mais les éléments peuvent être agrandis et tournés, et même s'étendre en dehors de leur cadre.
  • Les objets ordinaires peuvent être présentés comme vous le souhaitez, peuvent facilement avoir des présentations différentes dans des écrans différents, peuvent partager la présentation et peuvent adapter leur présentation aux changements des valeurs des données.
  • Si vous avez besoin d'imprimer, le rendu à l'imprimante est trivial. Correctement configuré, WPF rend Crystal Reports ou SQL Server Reporting Services (SSRS) ressemble à un jouet d'enfant.
  • Votre interface utilisateur sera beaucoup plus dynamique, avec des fonctionnalités intéressantes telles que des boutons qui s'animent lorsque vous passez la souris dessus.

Pour les services publics et les jeux, d'autres avantages viennent au premier plan :

  • Vous pouvez facilement ajouter des formes, des lignes et des dessins arbitraires à votre application sans utiliser d'éditeur externe. Chaque composant peut être lié à des données et animé, ou contrôlé par le code. Dans Windows Forms, il suffit généralement d'importer une image bitmap et de l'utiliser telle quelle, à moins de vouloir se donner beaucoup de mal..,
  • Les animations sont cool ! Les utilisateurs seront vraiment impressionnés, à condition que vous n'en fassiez pas trop. Elles peuvent également aider les gens à voir ce qui se passe et réduire la nécessité d'un éclairage. Par exemple, lorsque vous faites glisser un objet, vous pouvez animer la cible pour montrer ce qui se passera si vous le laissez tomber.
  • Couleurs, remplissages en dégradé, brosses, polices fantaisie, rotation de tout objet, brosses à carreaux, etc. Tout ce que vous voulez sur le plan graphique est à votre disposition.
  • Incroyablement personnalisable. J'avais besoin de dessiner des voies ferrées pour une application, afin de pouvoir y déposer un train. Quelques heures plus tard, je disposais de voies ferrées que je pouvais dessiner n'importe où sur l'écran à l'aide de Courbes de Bézier Ils se rejoignent et s'échangent automatiquement.

En fin de compte, toute interface graphique de taille significative que vous pourriez construire avec Windows Forms peut être construite avec WPF en un tiers de l'effort (ou moins) et est beaucoup, beaucoup plus belle.

WPF nécessite-t-il plus de ressources (RAM en particulier) ?

Vous payez un prix par rapport à Windows Forms, mais il est minime.

  • La mémoire vive peut augmenter ou diminuer en fonction de votre mise en œuvre. WPF stocke ses données plus efficacement et les objets individuels sont donc plus petits, mais il y a généralement plus d'objets dans WPF que dans Windows Forms, de sorte que cela s'équilibre et que l'un ou l'autre peut l'emporter.
  • L'unité centrale augmentera par rapport à Windows Forms. D'après mon expérience, la mise à jour des objets WPF à l'écran nécessite environ deux fois plus d'unité centrale que le rendu normal de Windows Forms. Si votre application passe la majeure partie de son temps à actualiser l'écran, WPF n'est peut-être pas fait pour vous. Mais dans ce cas, vous n'utilisez probablement pas non plus Windows Forms : La plupart des jeux sérieux sont écrits directement en DirectX .
  • L'utilisation du disque sera légèrement inférieure pour WPF parce qu'il nécessite beaucoup moins de code que Windows Forms. Les données auront la même taille, bien entendu.

Encore une remarque sur l'utilisation de l'unité centrale : Les animations et les transformations (mouvement, translation, etc.) sont en fait plus efficaces sur WPF que sur Windows Forms en raison de son stockage en mode conservé. C'est l'obtention initiale des objets qui est plus lente.

Frais généraux de maintenance

WPF est un énorme l'emporte sur Windows Forms en ce qui concerne la maintenance. Puisque tout est fait dans 1/5 du code qu'auparavant, il y a 1/5 de ce qu'il y a à maintenir. De plus, tous les éléments de base ont disparu, ce qui vous permet de vous concentrer sur le code qui fait réellement le travail.

Avantages de XAML

XAML est le cœur de WPF. Bien que WPF puisse être utilisé sans XAML, XAML le rend incroyablement facile à utiliser. XAML possède la capacité de HTML de spécifier facilement une interface utilisateur, mais ses balises intégrées sont beaucoup plus puissantes, et vous pouvez facilement définir les vôtres (en fait, il est normal de le faire). (En fait, il est normal de le faire).

Quelques avantages spécifiques de XAML :

  • L'ensemble de votre interface utilisateur est défini dans un fichier texte facile à lire et à manipuler, tant pour les utilisateurs que pour les outils.
  • Les MarkupExtensions permettent de spécifier les liaisons de manière claire et simple.
  • Les convertisseurs de types permettent de spécifier facilement des propriétés dont les types sont complexes. Par exemple, vous pouvez dire Pinceau="Vert" ou spécifier un pinceau à dégradé radial avec trois arrêts.
  • Vous pouvez créer vos propres éléments
  • Vous pouvez facilement exploiter les puissantes "propriétés attachées" de WPF

Autres points de vue

J'ai rêvé de quelque chose comme WPF pendant de nombreuses années. De nombreuses personnes ont implémenté des parties de cette fonctionnalité, mais la réunir en un seul endroit et à un prix aussi bas (0$) est incroyable.

WPF est un énorme changement de paradigme par rapport à Windows Forms et il faudra s'y habituer, mais le temps passé à l'apprendre sera largement récompensé.

WPF présente encore quelques défauts, même cinq ans plus tard, mais sa puissance vous étonnera totalement une fois que vous en aurez fait l'expérience. Si quelqu'un essaie de vous ramener à Windows Forms, vous n'irez pas plus loin que les coups de pied et les cris.

T - Obtenez une copie d'Expression Blend pour le développement - Modifier XAML à la main de temps en temps - N'abandonnez pas lorsque les choses vous semblent étranges au début.

72voto

AndyL Points 1046

WPF permet de faire des choses extraordinaires, et je l'ADORE... mais je me sens toujours obligé de nuancer mes recommandations, lorsque les développeurs me demandent si je pense qu'ils devraient passer à la nouvelle technologie.

Vos développeurs sont-ils prêts (de préférence, VIVANTS) à passer le temps qu'il faut pour apprendre à utiliser WPF efficacement ? Je n'aurais jamais pensé à dire cela à propos de MFC, ou de Windows Forms, ou même de DirectX non géré, mais vous ne voulez probablement PAS qu'une équipe essaie de "prendre" WPF au cours d'un cycle de développement normal pour un produit de livraison !

Est-ce qu'au moins un ou deux de vos développeurs ont une certaine sensibilité au design, et est-ce que les personnes qui ont l'autorité finale en matière de design ont une bonne compréhension des questions de développement, afin que vous puissiez tirer parti des capacités de WPF pour créer quelque chose qui soit réellement MEILLEUR, au lieu d'être simplement plus "coloré", avec de l'animation gratuite ?

Un certain pourcentage de votre clientèle cible utilise-t-il des jeux de puces graphiques intégrés qui pourraient ne pas prendre en charge les fonctionnalités que vous aviez prévues - ou bien utilise-t-il encore Windows 2000, ce qui l'éliminerait complètement de la clientèle ? D'aucuns se demanderaient également si vos clients se soucient réellement de l'amélioration des images, mais pour avoir vécu les débats internes à l'entreprise "Nos clients professionnels ne se soucient pas des couleurs et des images" au début des années 90, je sais que les solutions bien conçues de vos concurrents les feront s'en soucier, et la vraie question est de savoir si les conditions sont réunies pour vous permettre d'offrir quelque chose qui les fera s'en soucier dès MAINTENANT.

Le projet prévoit-il un développement à partir de la base, au moins pour la couche de présentation, afin d'éviter la complexité supplémentaire liée à la tentative de s'accrocher à des échafaudages incompatibles (l'interopérabilité avec Win Forms n'est PAS transparente) ?

Votre directeur est-il capable d'accepter (ou de ne pas remarquer) une baisse significative de la productivité des développeurs pendant quatre à six mois ?

Ce dernier problème est dû à ce que j'aime appeler la nature "FizzBin" de WPF, avec dix façons différentes de mettre en œuvre une tâche, sans raison apparente de préférer une approche à une autre, et peu de conseils disponibles pour vous aider à faire un choix. Non seulement les lacunes du choix que vous ferez ne deviendront évidentes que bien plus tard dans le projet, mais vous êtes pratiquement assuré que tous les développeurs de votre projet adopteront une approche différente, ce qui se traduira par un casse-tête majeur en matière de maintenance. Le plus frustrant, ce sont les incohérences qui vous font constamment trébucher lorsque vous essayez d'apprendre le framework.

Vous trouverez des informations plus approfondies sur WPF dans un article de mon blog :

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

62voto

cletus Points 276888

WPF nécessite Windows Vista ou Windows XP SP2, ce qui n'est pas une exigence onéreuse, mais c'est une exigence pertinente. Si vous souhaitez utiliser Windows 2000 (ce que certaines personnes font encore), WPF ne fonctionnera pas pour vous.

WPF est également une technologie plus récente et n'a pas fait ses preuves comme Windows Forms. Vous pouvez donc choisir Windows Forms comme une option moins risquée, en particulier pour les applications plus importantes.

Ceci étant dit, oui, WPF est l'avenir. Visual Studio 2010 est en train d'être réécrit en WPF, ce qui sera probablement la plus grande application WPF à ce jour et constituera également un véritable test pour la technologie.

De toute évidence, les applications Windows Forms héritées constituent une autre situation dans laquelle ce choix s'impose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X