Lors de la création d’une nouvelle interface graphique, WPF est-il le choix préféré par rapport à Windows Forms ?[fermé]

StackOverflow https://stackoverflow.com/questions/57909

Question

La plupart des restrictions et astuces liées aux formulaires Windows sont communes à la plupart des programmeurs.Mais depuis .NET 3.0, WPF est également disponible, la Windows Présentation Foundation.On dit que vous pouvez rendre les "applications sexy" plus faciles avec et avec .NET 3.5 SP1, la vitesse d'exécution a été bien améliorée.

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 apprendre « tout » à partir de zéro.

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

Était-ce utile?

La solution

WPF vous permet de faire des choses incroyables, et je l'ADORE...mais je me sens toujours obligé de nuancer mes recommandations, chaque fois que 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, EAGER) à consacrer le temps nécessaire pour apprendre à utiliser WPF efficacement ?Je n'aurais jamais pensé dire cela à propos de MFC, de Windows Forms, ou même de DirectX non géré, mais vous ne voulez probablement PAS qu'une équipe essaie de "récupérer" WPF au cours d'un développement normal.cycle pour un produit d'expédition !

Est-ce qu'au moins un ou deux de vos développeurs ont des sensibilités en matière de conception, et les personnes détenant l'autorité de conception finale ont-elles une bonne compréhension des problèmes de développement, afin que vous puissiez tirer parti des capacités de WPF pour créer quelque chose qui est réellement MIEUX, au lieu de simplement plus "coloré" , avec une 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 envisagez - ou utilisent-ils toujours Windows 2000, ce qui les éliminerait complètement en tant que clients ?Certaines personnes se demanderaient également si vos clients se soucient réellement des visuels améliorés, mais, ayant vécu les débats internes de 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 incitera à 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 intéressera MAINTENANT.

Le projet implique-t-il un développement de base, au moins pour la couche de présentation, pour éviter la complexité supplémentaire liée à la tentative de connexion à un échafaudage existant incompatible (l'interopérabilité avec Win Forms n'est PAS transparente) ?

Votre responsable peut-il accepter (ou être distrait de remarquer) une BAISSE significative de la productivité des développeurs pendant quatre à six mois ?

Ce dernier problème est dû à ce que j'aime considérer comme la nature "FizzBin" de WPF, avec dix façons différentes d'implémenter n'importe quelle tâche, et aucune raison apparente de préférer une approche à une autre, et peu de conseils disponibles pour vous aider à faire une choix.Non seulement les défauts de votre choix, quel que soit votre choix, ne deviendront évidents que beaucoup plus tard dans le projet, mais vous êtes pratiquement assuré que chaque développeur de votre projet adoptera une approche différente, ce qui entraînera un casse-tête majeur en matière de maintenance.Le plus frustrant de tous sont les incohérences qui vous font constamment trébucher lorsque vous essayez d'apprendre le cadre.

Vous pouvez trouver des informations plus détaillées sur WPF dans une entrée sur mon blog :

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

Autres conseils

Après trois mois passés à essayer d'élaborer un secteur d'activité (LOB) sur WPF, j'ai atteint le point d'envisager de revenir à Windows Forms pour mon projet, et en recherchant les opinions d'autres personnes, je suis tombé sur ce fil...

Oui, WPF est une technologie brillante et ses avantages vont bien au-delà du simple plaisir des yeux...les capacités de création de modèles et de liaison en sont d’excellents exemples.L'ensemble du modèle objet offre plus de flexibilité et des possibilités plus larges.Cela n’en fait cependant pas la plate-forme de facto pour les futures applications métier.

Les "problèmes" que WPF résout en termes de séparation de l'interface graphique de la logique métier ne sont pas des problèmes qui ne peuvent pas être facilement résolus dans Windows Forms en commençant simplement par la bonne architecture et le bon état d'esprit.Même les capacités de liaison objet-chemin de WPF peuvent être reproduites dans Windows Forms avec quelques classes d'assistance très simples.Les capacités de modèles de données de WPF sont très intéressantes, mais encore une fois, elles ne sont rien que vous ne puissiez simuler dans Windows Forms dans les rares occasions où vous ne savez absolument pas exactement quels objets vous allez représenter sur une partie donnée de l'écran.

Là où Windows Forms est en avance, c'est en termes de maturité.Vous ne pouvez pas balancer un chat mort sur Google sans consulter un blog sur lequel quelqu'un a résolu un problème Windows Forms pour vous.WPF, en revanche, dispose de moins de ressources d'apprentissage disponibles, de moins de contrôles personnalisés disponibles et n'a pas résolu autant de ses problèmes initiaux.

Au sommet de la décision entre WPF et Windows Forms doit être la maturité de l'environnement de développement.Les éditeurs Windows Forms sont élégants, réactifs et intuitifs.Les commentaires sur les erreurs vous parviennent instantanément, 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 temps de conception relativement pathétique, avec une vue de conception trop prête à se dégonfler dès la première rencontre d'une erreur, nécessitant souvent une construction du projet après le correctif avant que le concepteur ne veuille se lancer. encore.Le glisser-déposer des composants de la boîte à outils pourrait tout aussi bien ne pas être pris en charge, étant donné le large éventail de circonstances dans lesquelles cela ne fonctionne pas du tout ou donne des résultats totalement contre-intuitifs.Malgré la promesse de WpfToolkit, il n'existe toujours pas de DataGrid utilisable pour WPF offrant des performances raisonnables ou une convivialité au moment du design.

Le débogage des applications WPF est un peu comme le vieux Paradigme de débogage ASP.NET...frapper F5 -> attendre -> lancer -> erreur -> arrêter -> réparer -> frapper F5 -> attendre -> lancer -> erreur -> gémir -> arrêter -> réparer -> frapper F5....Tout le XAML exécuté par votre programme est verrouillé et la recherche des problèmes spécifiques à XAML est souvent fastidieuse.

L'essentiel, en termes simples, est que les outils de développement pour Windows Forms vont vous permettre de développer des frontaux en une fraction du temps nécessaire à une application WPF... en particulier si vous créez des grilles maître-détails ou des interfaces de type feuille de calcul, dont disposent la plupart des LOB.Avec Windows Forms, vous démarrez avec 90 % du travail déjà effectué pour vous.

Je suis un grand fan de l'architecture WPF.J'aimerais juste que l'ensemble d'outils au moment de la conception ne ressemble pas à une version de débogage pré-alpha.


Modifier:Cette réponse a été publiée à propos de .NET 3.5 + Visual Studio 2008, mais .NET 4.0 avec Visual Studio 2010 est livré avec une grille de données WPF.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 le faire RAD développement, optez pour Windows Forms.Si vous cherchez à produire une application métier multi-utilisateurs bien architecturée, maintenable, évolutive, conviviale et multi-utilisateurs, pensez à ASP.NET MVC + HTML 5 + jQuery...Mes projets utilisant ces technologies ont abouti à de meilleurs résultats, plus rapidement, pour mes clients.MVC propose 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 que vos utilisateurs finaux disposent de postes de travail modernes dotés d'un matériel graphique décent.

J'utilise WPF depuis sept mois sur ce qui est désormais devenu un système de base pour mon client, et j'aimerais partager avec vous quelques réflexions supplémentaires sur l'expérience d'apprentissage et d'utilisation de WPF comme plate-forme de présentation de secteur d'activité.

En général, les commentaires que j'ai faits ci-dessus tiennent toujours...La prise en charge de WPF au moment de la conception n’est pas encore là.Si vous êtes très pressé de lancer une application client riche, optez pour Windows Forms.Période.Microsoft n'est pas pressé d'abandonner la plate-forme GDI / Windows Forms, vous pouvez donc compter sur un bon support pendant un certain temps.

WPF n'est pas facile à maîtriser, mais cela ne devrait pas être là que vous décidez 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 quelques concepts utiles et modernes.

Dans WPF, par exemple, votre investissement dans des objets métier bien écrits avec 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 entrées utilisateur non valides. sans écrire de code GUI pour détecter ces erreurs.C'est précieux.

Les capacités de style et de création de modèles de WPF se sont également révélées précieuses.Malgré l'idée fausse répandue selon laquelle la seule utilité du style et des modèles est de créer un effet visuel à l'écran, la vérité est que ces fonctionnalités simplifient considérablement le codage d'une interface utilisateur qui donne des commentaires riches - comme des boutons qui se désactivent/s'activent en fonction de l'état de la couche de logique métier sous-jacente, ou des info-bulles qui trouvent intelligemment leur texte en fonction de l'état de l'objet sous le curseur, etc.

Tout cela s'ajoute à des fonctionnalités incroyablement précieuses pour "rien d'extraordinaire". Applications commerciales, tout simplement parce qu'ils permettent de maintenir facilement l'interface cohérente avec les données sous-jacentes.

En un mot:

  • Dans les formulaires Windows, vous concevez votre interface utilisateur, puis écrivez du code pour conduire cette interface utilisateur, qui inclut généralement également du code pour piloter vos objets de données.
  • Dans WPF, vous investissez dans la couche métier qui pilote vos objets de données, puis concevez une interface qui écoute à vos objets de données.

C'est une différence apparemment subtile, mais cela fait une énorme différence dans votre capacité à réutiliser le code...ce qui pose la question :« La question Windows Forms vs WPF est-elle réellement une décision d'investissement ?

(Cela semble être devenu mon fil préféré.)

Y a-t-il des raisons impérieuses d'utiliser WPF

Absolument!WPF est absolument incroyable !Ce sera un avantage majeur pour pratiquement tous les projets, car il possède de nombreuses fonctionnalités et capacités qui manquent à Windows Forms.

Pour les applications métiers, les plus gros gains seront :

  • Les fantastiques liaisons de données et 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 l'utiliser. Mélange d'expressions pour configurer exactement l'apparence de votre objet par glisser-déposer.Et lier des choses comme la couleur ou la forme est trivial.
  • La disposition de l'écran est incroyablement flexible.Non seulement tout dans WPF peut s'adapter en douceur aux changements de taille et de forme du conteneur, mais les éléments peuvent également être agrandis et pivotés de manière triviale, et même s'étendre en dehors de leur cadre conteneur.
  • Les objets ordinaires peuvent être présentés comme vous le souhaitez, peuvent facilement avoir différentes présentations sur différents écrans, partager une présentation et adapter leur présentation aux changements dans les valeurs des données.
  • Si vous avez besoin d'imprimer, le rendu vers l'imprimante est trivial.Correctement configuré, WPF fait Rapports Crystal ou Services de rapports SQL Server (SSRS) ressemblent à un jouet d'enfant.
  • Votre interface utilisateur aura une apparence beaucoup plus dynamique, avec notamment des fonctionnalités intéressantes telles que des boutons qui s'animent lorsque vous passez la souris dessus.

Pour les utilitaires et les jeux, d’autres avantages passent au premier plan :

  • Vous pouvez facilement ajouter des formes, des lignes et des dessins arbitraires à votre application sans utiliser d'éditeur externe.Chaque composant de ceux-ci peut être lié aux données et animé, ou contrôlé par du code.Dans Windows Forms, il vous suffit généralement d'importer un bitmap et de l'utiliser tel quel, à moins que vous ne souhaitiez faire beaucoup de travail.
  • Les animations sont cool !Les utilisateurs seront vraiment impressionnés, à condition de ne pas en faire trop.Ils peuvent également aider les gens à voir ce qui se passe et réduire le besoin de surlignage.Par exemple, lorsque vous faites glisser un objet, vous pouvez animer la cible pour montrer ce qui se passera si vous le déposez.
  • Couleurs, remplissages dégradés, pinceaux, polices fantaisie, rotation de tous les objets, pinceaux à carreaux, etc.Tout ce que vous voulez graphiquement est à vous, sur demande.
  • Incroyablement personnalisable.J'avais besoin de dessiner des voies ferrées pour une seule application, afin de pouvoir y déposer un train.Quelques heures plus tard, j'avais des voies ferrées que je pouvais dessiner n'importe où sur l'écran en utilisant Courbes de Bézier, et ils rejoindraient et changeraient automatiquement.

L'essentiel est que toute interface graphique de taille significative que vous pourriez créer dans Windows Forms peut être créée dans WPF en un tiers de l'effort (ou moins) et avoir une apparence bien meilleure.

WPF nécessite-t-il plus de ressources (RAM notamment)

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

  • La RAM peut augmenter ou diminuer en fonction de votre implémentation.WPF stocke ses données plus efficacement afin que les objets individuels soient plus petits, mais il y a généralement plus d'objets dans WPF que dans Windows Forms, donc cela s'équilibre et l'un ou l'autre peut s'en sortir.
  • Le processeur augmentera par rapport à Windows Forms.D'après mon expérience, la mise à jour réelle des objets WPF à l'écran nécessite environ deux fois plus de CPU que le rendu Windows Forms normal.Si votre application passe la plupart de son temps à mettre à jour 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 sur DirectX.
  • L'utilisation du disque sera légèrement moindre pour WPF car il nécessite beaucoup moins de code que Windows Forms.Les données seront bien sûr de la même taille.

Encore une remarque sur l'utilisation du processeur :Les animations et transformations (mouvement, traduction, etc.) sont en réalité plus efficaces sur WPF que dans Windows Forms en raison de leur stockage en mode conservé.C'est le déplacement initial des objets là-haut qui est le plus lent.

Frais généraux de maintenance

WPF est un énorme gagner sur Windows Forms en matière de maintenance.Puisque tout est fait avec 1/5 de code comme avant, il y a 1/5 de plus à gérer.De plus, tous les éléments passe-partout ont disparu afin que vous puissiez 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 simple à utiliser.XAML a la capacité du HTML à 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, c’est normal de le faire).

Quelques avantages spécifiques de XAML :

  • L'intégralité de votre interface utilisateur est définie 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 avec des types complexes.Par exemple, vous pouvez dire Brush="Green" ou vous pouvez 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 idées

Je rêvais de quelque chose comme WPF depuis de nombreuses années.De nombreuses personnes ont implémenté des parties de cette fonctionnalité, mais tout obtenir au même endroit et à un tel prix (0 $) est incroyable.

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

WPF a encore quelques défauts, même cinq ans plus tard, mais sa puissance vous épatera totalement une fois que vous en aurez fait l'expérience.Si quelqu'un essaie de vous ramener vers Windows Forms, vous ne ferez que hurler et donner des coups de pied.

Conseils:- Obtenez une copie de l'expression Blend for Development - Modifiez xAML à la main occasionnellement - n'abandonnez pas quand cela semble étrange au début

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

WPF est également une technologie plus récente et moins éprouvée que Windows Forms. Vous pouvez donc choisir Windows Forms comme option moins risquée, en particulier pour les applications plus volumineuses.

Cela étant dit, oui, WPF est l'avenir.Visual Studio 2010 est en cours de réécriture en WPF, qui sera probablement la plus grande application WPF à ce jour et ce sera également un véritable test pour la technologie.

De toute évidence, les anciennes applications Windows Forms constitueraient une autre situation où ce serait le bon choix.

Comme d'autres l'ont dit, il y a des avantages et des inconvénients dans les deux cas.Les avantages de WPF, comme d'autres l'ont dit, incluent :

  • La possibilité de créer des interfaces utilisateur très riches relativement facilement.
  • Animation et effets spéciaux plus faciles
  • Évolutivité inhérente (utilisez l'outil de loupe de Windows Vista sur une application WPF et sur une application Windows Forms :Notez que dans l'application WPF, tous les illustrations vectorielles évoluent magnifiquement.)
  • (ALERTE D'OPINION) Je pense qu'il est "plus facile" de créer des systèmes orientés document dans WPF

Cependant, WPF présente des inconvénients, où Windows Forms arrive en tête :

  • La suite de contrôles intégrés de WPF est bien plus limitée que celle de Windows Forms.
  • Il existe une meilleure prise en charge dans l’espace de contrôle tiers pour Windows Forms.(Cela change, bien sûr, mais réfléchissez-y :Windows Forms existe depuis 2001 ;WPF seulement quelques années.Avec le temps, Windows Forms bénéficie d'un meilleur support dans la communauté.)
  • La plupart des développeurs connaissent déjà Windows Forms ;WPF offre une nouvelle courbe d'apprentissage

Enfin, gardez à l’esprit que vous pouvez créer de superbes interfaces utilisateur attrayantes et attrayantes dans l’un ou l’autre outil, si vous effectuez le travail (ou utilisez les bons outils tiers).En fin de compte, ni l’un ni l’autre n’est nécessairement meilleur en toutes circonstances.Utilisez ce qui convient au projet.

Le modèle de programmation pour WPF est plus ouvert et flexible que Windows Forms, mais comme ASP.NET MVC, il nécessite un peu plus de discipline en termes d'implémentation correcte des modèles Model-View-ViewModel.

Mon premier LOB L'application avec WPF s'est soldée par un échec total, car c'était une consommation de ressources qui a arrêté les ordinateurs portables très bas de gamme de mon utilisateur final...et c'est finalement parce que je viens d'entrer avec WPF + LINQ vers SQL et je m'attendais à un bon résultat...et c'est là que WPF s'écarte si fortement des Windows Forms...Dans Windows Forms, vous pouvez vous en sortir avec ce genre de choses.WPF est beaucoup plus gourmand en ressources que Windows Forms, et si vous ne concevez pas votre application pour qu'elle soit allégée, vous vous retrouvez avec un gorille de 800 livres.

N'hésitez pas à utiliser WPF...explorez-le.Mais sachez que les péchés acceptables du codage Windows Forms ne produiront pas de bons résultats dans WPF.Ce sont des moteurs fondamentalement différents, qui se prêtent à des modèles de codage fondamentalement différents.

Dernier mot:Si vous optez pour WPF, familiarisez-vous avec la virtualisation des données à utiliser avec des listes et des grilles.Ce qui est un simple ListItem ou GridCell lié aux données finit par être un graphe d'objet logique et visuel volumineux dans WPF, et si vous n'apprenez pas à virtualiser, votre application ne fonctionnera pas bien sur de grands ensembles de données.

La courbe d'apprentissage de WPF est très abrupte et je vous recommande de vous procurer d'abord les livres évidents (Adam Nathan, Vend/Griffiths, etChris Anderson) et les blogs (Josh Smith, etc.).Préparez-vous simplement et assurez-vous que votre projet vous laisse le temps d'apprendre WPF.

En plus d'apprendre la technologie, passez du temps à apprendre les modèles utilisés pour créer des applications WPF. Vue du modèle (MVVM) semble être celui qui a gagné en popularité.

Personnellement, je pense que WPF en vaut la peine, mais soyez prévenu.Notez également que vous limitez efficacement vos utilisateurs à Windows XP SP2+ et Windows Vista.Nous avons pris cette décision, mais vos exigences peuvent être différentes.

Les deux technologies ont leurs avantages et leurs inconvénients.Dans une grande application avec une interface utilisateur "classique", j'utiliserais Windows Forms.Dans une application qui nécessite une interface utilisateur riche (skinning, animations, changement d'interface utilisateur), je choisirais WPF.Veuillez consulter l'article WPF contreFormulaires Windows comparer WPF et Windows Forms.

Outre la flexibilité de la conception de l’interface utilisateur, WPF présente certains avantages techniques :

1.) WPF ne s'appuie pas sur les objets GDI. Eh bien, je pense qu'il utilise 2 objets GDI pour l'instance de la fenêtre elle-même, mais ce n'est pratiquement rien.J'ai été impliqué dans une certaine mesure dans une très grande application interne Windows Forms.Les gens de notre bureau en exécutent parfois 3 ou 4 simultanément.Le problème est qu'ils se heurtent fréquemment à la limite de 10 000 objets GDI inhérente à Windows 2000, XP et Vista.Lorsque cela se produit, l’ensemble du système d’exploitation ne répond plus et vous commencerez à voir des artefacts visuels.La seule façon de résoudre ce problème est de fermer les applications.

2.) WPF utilise le GPU. La possibilité pour WPF de décharger une partie du traitement de l'interface utilisateur sur le GPU est géniale.Je m'attends seulement à ce que cet aspect s'améliore avec le temps.En tant qu'ancien amateur de programmation OpenGL, je peux apprécier la puissance du GPU.Je veux dire, ma carte vidéo à 100 $ a 112 cœurs fonctionnant à 1,5 GHz chacun (et ce n'est en aucun cas le haut de gamme).Ce type de puissance de traitement parallèle peut faire honte à n’importe quel processeur quadricœur.

Cependant, WPF est encore assez nouveau.Il ne fonctionnera pas sous Windows 2000.Et de fait, une application WPF peut être lente à démarrer après un nouveau redémarrage.Je parle de tout ça sur mon blog :http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

Je pense que cela vaut la peine d'apprendre WPF.Une fois que vous êtes au courant, le travail de conception sur vos formulaires est beaucoup plus facile à mon humble avis.Je ne m'inquiéterais pas autant des trucs « sexy ».La plupart de cela n’est qu’une mode.Vous pouvez créer des applications « normales » de style Winforms très rapidement et facilement dans WPF.

L'ensemble du concept se prête à une conception plus simple, OMI.

Je ne suis pas d'accord avec certaines des réponses ici.WPF est vraiment bien adapté pour secteur d'activité (LOB).(Le client LOB de conception Frog est le meilleur exemple).Et en plus de toutes les possibilités pour que votre interface utilisateur soit un régal pour les yeux (ce qui n'est pas nécessaire dans les applications professionnelles), WPF vous offre bien plus.

Les fonctionnalités de liaison de données et de création de modèles sont tout simplement supérieures à celles de Windows Forms.Il offre également un bien meilleur moyen de séparer le code et la présentation.Nous avons utilisé avec succès WPF pour 2 applications LOB dans des équipes ne comptant pas plus de 2-3 développeurs.

Le plus gros problème auquel vous serez confronté est probablement la courbe d'apprentissage abrupte de WPF (par rapport à Windows Forms) qui diminuera la vitesse de développement des développeurs non habitués à WPF.

Nous réécrivons actuellement notre application en WPF à partir de Windows Forms.Oui, la courbe d'apprentissage est abrupte et il faut « réapprendre » certaines choses, mais cela en vaut vraiment la peine.Et en combinaison avec WCF, nous constatons que nous écrivons moins de code, plus rapidement et plus robuste que jamais.

Restez avec cela pendant un moment, lisez Le livre d'Adam Nathan, et consultez la bibliothèque toujours croissante de contrôles tiers comme ceux de Télérik et ComposantUn.Un point négatif, à mon avis, est que l'outil de conception, Mélange d'expressions, est très difficile à utiliser.La dernière version est toujours en version bêta, mais elle ne convient tout simplement pas à ceux d'entre nous qui utilisent Visual Studio depuis des années.Oui, c'est principalement destiné aux concepteurs, mais certaines choses que vous ne pouvez tout simplement pas faire dans Visual Studio.

Pensez à WPF si la conception de l’interface est importante pour vous, car WPF peut offrir une meilleure expérience d’interface utilisateur.Mais Windows Forms a de son côté des années d'évolution, il a donc fait ses preuves et vous pouvez trouver de nombreux programmeurs expérimentés pour cette plate-forme.

La portabilité peut également poser problème, WPF ne fonctionne qu'avec Windows XP SP2 et versions ultérieures.

De plus, WPF a une courbe d'apprentissage abrupte, ce qui signifie qu'il n'est pas facile de fournir un produit de qualité sans avoir une expérience WPF spécifique.

Eh bien, une réponse est "quand vous devez prendre en charge 1.1 ou 2.0", puisque WPF fait partie de .NET 3.0.Il existe des limitations connues du système d’exploitation pour WPF, et il existe un problème évident de compétences :si vous avez une équipe de développeurs qui connaissent Winforms, il peut être plus facile de produire un code robuste avec Winforms.Cependant, si vous écrivez beaucoup de code d’interface utilisateur, cela vaut probablement la peine de commencer à utiliser WPF à un moment donné.

WPF partage également de nombreux points communs avec Silverlight, il présente donc des avantages transférables.

WPF est livré avec de nombreux avantages tels que de superbes fonctionnalités de liaison des données, la séparation des préoccupations, la séparation de la conception et de la logique, etc.

En tant que développeur, j'aime la capacité de définir mon interface utilisateur en utilisant XAML plutôt que d'être lié au designer Forms Windows et je me sens bien en sachant que je peux compter sur un autre designer pour que mon application soit belle.

Personnellement, je ne me soucie pas des versions plus anciennes de Windows ne sont pas prises en charge, mais l'un des gros problèmes avec WPF est que ce n'est pas (actuellement / jamais) soutenu par Mono (http://www.mono-project.com) afin que les applications WPF ne fonctionnent pas sous Mac OS ou Linux.(Bien que les applications Silverlight le fassent).

Si vous avez le temps et les ressources nécessaires pour investir dans l’apprentissage de WPF, faites-le !Même si vous allez écrire des applications Silverlight pour prendre en charge plusieurs systèmes d'exploitation.

Si vous avez besoin que des applications de bureau s'exécutent sur plusieurs systèmes d'exploitation, utilisez SWF.

Il existe de nombreuses différences.Nous avons adoré WPF pour :

  1. Le style déclaratif de programmation.
  2. Animations et transitions d'état
  3. Expression Blend est un excellent outil
  4. Bon support de style.

Cependant, nous sommes restés avec Windows Forms parce que :

  1. Le temps supplémentaire nécessaire à un développeur pour apprendre WPF lorsqu'il connaît déjà les formulaires Windows.
  2. WPF ne s'exécutera pas sur Windows 2000 ou inférieur.

La plus grande considération au moment de décider lequel utiliser est de considérer le .NET Framework que votre public cible a installé.Je trouve que de plus en plus de personnes disposent des versions inférieures du .NET Framework qui ne prennent en charge que Windows Forms, mais ce n'est que mon expérience personnelle.

L'avantage de WPF est qu'il est beaucoup plus facile de créer de jolies interfaces graphiques avec des contrôles et des animations personnalisés.WPF permet également de séparer davantage les couches de présentation et de logique.Si vous avez des concepteurs, cela vous permet de confier 95 % de ce travail à des non-codeurs et permet aux codeurs de travailler sur la logique.Les inconvénients sont les coûts logiciels pour Expressions Blend et le manque de bon fonctionnement des outils de profilage de code de Visual Studio, car ils ont tendance à se laisser prendre par les appels de framework en essayant de restituer XAML.Je suis sûr qu'il y en a d'autres, mais ce sont les deux seuls que nous avons réellement vus.

La principale considération est de savoir si vous souhaitez exiger que vos clients installent .NET 3.0 ou, mieux encore, .NET 3.5 SP1.Vous recevrez des commentaires négatifs

WPF facilite beaucoup le transfert du travail de conception de formulaires à un véritable designer, et non à un développeur en vêtements de créateur.Si c'est quelque chose que vous souhaitez faire, WPF est votre réponse.Si les boutons de style Windows classiques conviennent, alors Windows Forms est probablement la solution.

(Plusieurs réponses affirment que vous devriez utiliser WPF si la conception de l'interface est "importante pour vous", mais c'est assez vague.La conception de l'interface est toujours "importante".)

Si vous disposez d'une licence MSDN, consultez Outils d'expression.Il est conçu explicitement pour WPF, s'exporte directement vers Visual Studio et peut faciliter votre transition.

Si vous ne vous souciez que de la prise en charge de Windows et que le temps nécessaire à son apprentissage ne vous dérange pas, optez pour WPF.Il est rapide, flexible, facile à relooker et dispose d'excellents outils pour travailler avec.

En prime, Silverlight est basé sur WPF et commencer par l'un ou l'autre vous permet d'acquérir le savoir-faire nécessaire pour travailler avec l'autre.Si les choses continuent à être basées sur le Web, disposer de connaissances préalables (et d'une bibliothèque de code existant) à transférer facilement vers le navigateur (ou Windows Live Mesh) pourrait aider à donner à votre logiciel une durée de vie supplémentaire.

Si vous décidez d'utiliser WPF, en tenant compte des avantages et des inconvénients déjà expliqués dans les réponses ci-dessus, je vous recommande fortement de suivre cette étape. Épisode dnrTV avec Billy Hollis

Dans DotNetRocks épisode 315, Brian Noyes en parle longuement.

Il existe un problème connu avec le rendu du texte dans WPF.De nombreux utilisateurs signalent que l’utilisation intensive de l’anticrénelage et de la fusion de pixels provoque un texte flou.Il s'agit d'un problème majeur dans certaines circonstances et, pour autant que je sache, cela a été reconnu par Microsoft à un certain niveau.

Depuis 3 ans et demi, je fais du développement Windows Forms (dans deux entreprises).Les deux applications ont été largement utilisées et ont fini par rencontrer des problèmes GDI.Les grandes applications Windows Forms finiront par manquer de ressources GDI, ce qui obligera l'utilisateur final à redémarrer.

Scott se plaint d'Expression Blend et comment cela n'a pas de sens pour lui en tant que développeur.Ma première réaction à Expression Blend a été comme ça.Cependant, je le considère désormais comme un outil inestimable, mais cela dépend vraiment du type de développeur que vous êtes.

Je suis un développeur d'interface utilisateur qui a dû effectuer le Intégrateur rôle, et j'ai finalement trouvé Expression Blend inestimable pour créer des styles et contrôler des modèles de manière WYSIWYG.J'ai presque toujours Expression Blend et Visual Studio en cours d'exécution sur le même projet en même temps.

Je pense aussi qu'en jouant avec Expression Blend et en jetant un oeil au XAML qui est craché est un excellent moyen d'apprendre l'API WPF...tout comme utiliser le concepteur dans Windows Forms et vérifier le code C# qu'il crache est utile pour apprendre à utiliser tout ce que vous y concevez.

Expression Blend est utile.Essayez-le, surtout si vous travaillez sur les visuels de l'application.

Une citation de un message précédent de Mark:

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

Je dirais qu'il s'agit davantage d'un choix de conception que de savoir si vous utilisez ou non Windows Forms ou WPF.Cependant, je peux comprendre que certaines technologies pourraient être mieux adaptées à une approche particulière.

Seulement si vous n'avez pas d'expertise WPF et que vous ne souhaitez pas y investir :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top