Interface graphique Windows: WPF ou WinRT (2015+)

j'essaie d'avoir un aperçu des différentes technologies, à utiliser lors de la construction de GUI dans le Monde Windows.

pour le contexte, je suis en train de construire un petit jeu multijoueur de plateforme 2d. (Juste pour but d'apprentissage..)

mon professeur dit qu'il pense que WPF est la bonne voie à suivre, mais il semble qu'il ne le compare qu'aux formes de fenêtres.

selon moi, en 2015, Windows Forms est totalement mort?

dans cet autre stackover questions, ils disent WinRT+XAML est pour Metro GUI building(fenêtre 8 tuiles chose!), et il semble que WPF est quelque chose utilisé uniquement pour le bureau dans la fenêtre 7/8 et sont étroitement liés à Silverlight..

comment Windows 8 Runtime (WinRT / Windows Store apps / Windows 10 Universal App) se compare-t-il à Silverlight et WPF?

  • le bureau est où le vieux applications en ligne (en rouge. PAM.)
  • la nouvelle classe d'applications, les applications de métro, peut être construit de plusieurs façons, y compris par VB.NET, C # ou c++. Ces trois options linguistiques peuvent utiliser XAML pour la construction de L'interface utilisateur. L'alternative est d'utiliser JavaScript / HTML5 / CSS pour le développement de L'interface utilisateur et le code de l'application.

ma vraie question Est: N'y a-t-il pas un bon moyen de construire des GUI dans le monde des fenêtres?

et si non, quelles technologies devrait-on utiliser sur Windows 7, Windows 8(bureau et métro), Windows Phone, (et Windows 10!), et même x-box..

Est-il des technologies différentes pour être comparées de cette façon?

dans quoi pensez-vous qu'il est juste d'investir du temps?

92
demandé sur Community 2015-02-18 17:58:14

9 réponses

il y a beaucoup ici, Mais voici:

  • Est Windows Forms (Winforms) morts ? Aucun. Son soutien est encore actif. Cela dit, c'est un horrible technologie à travailler dans (au moins une fois que vous connaissez la magie de WPF)
  • si vous voulez construire un beau, bien conçu desktop (Classique, pas métro) app, WPF est la réponse en termes purs.net. Vous peut utilisez les API WinRT (telles que leurs classes socket) mais vous ne pouvez pas les exécuter sur OSs avant Windows 8. L'INTERFACE utilisateur est toujours WPF.
  • WinRT Apps sont pour le magasin Windows 8 (ils sont également disponibles dans le magasin Windows 10). Vous ne pouvez pas utiliser WPF ici, ou WinRT sur le bureau, donc l'endroit où vous déployez détermine ce que vous utilisez. Vous avez une bonne compréhension des langues / technologies disponibles.
  • Windows Phone 8 utilise un runtime modifié de WinRT (ce a changé sous Windows 10). Pour Win8 / WP8, vous pouvez utiliser les applications "Universal" pour partager la plupart du code entre une application WinRT standard et une application Windows phone.
  • Windows 10 utilise la plate-forme universelle de Windows (UWP) qui est basée sur .NET Core. Le Code développé pour Windows 10 peut également être utilisé sur Xbox One, Windows Phone 10 et HoloLens. WPF est toujours pour les applications de bureau "standard".
  • XBox, c'est délicat. XNA est de s'en aller, et Microsoft semble s'éloigner du contenu créé par la communauté pour la plate-forme. Cela dit, Unity peut se déployer sur XBox, et je pense que le développement Standard DirectX (C++) fonctionne pour lui. Les applications de la plate-forme Windows universelle peuvent également être déployées sur Xbox One, ce qui semble être la stratégie de Microsoft pour l'avenir.

en ce qui concerne ce sur quoi passer du temps, cela dépend de ce que vous ciblez :). Apprendre WPF / UWP + XAML vous apportera beaucoup d'avantages si vous voulez rester "actuel" dans le développement de L'interface graphique.net, donc c'est ce que j'aimerais. WPF a la plupart des fonctionnalités, donc en commençant par là, vous avez juste à trouver des solutions de travail pour ce qui manque dans UWP (ou toute autre technologie basée sur XAML).

si vous faites cela, assurez-vous d'apprendre le modèle MVVM (Model-View-View Model). Il fonctionne vraiment bien avec les technologies basées XAML, et vous permet de partager beaucoup de logique entre vos applications WPF et UWP. La même logique peut également être utilisé si vous développez éventuellement des applications Xamarin pour iOS / Android,etc.

notez que pour true game development, vous voulez un Real game framework (comme Unity3D ou même XNA). Vous pouvez le faire dans WPF, et c'est un meilleur choix que Winforms, mais ni l'un ni l'autre ne sont vraiment destinés à des jeux.

130
répondu BradleyDotNET 2016-10-26 15:41:58

c'est tout à fait un vieux fil, mais comme je suis tombé sur ce à travers google (par intérêt), peut-être que quelqu'un d'autre pourrait atteindre ici aussi bien. C'est une question qui est posée encore et encore par les nouveaux programmeurs. J'aimerais donc répondre à quelques questions maintenant que Windows 10 est officiellement sorti.

tout d'abord, il ne faut plus commencer avec les formulaires Windows. C'est la technologie la plus mature pour l'instant, mais il n'y aura plus de développement de formes Windows, c'est seulement en l'étape de l'entretien maintenant. Le FPF est activement développé (dernière lecture). Mais maintenant, les applications Windows Universal (WinRT one) n'ont plus besoin d'être utilisées en plein écran, et peuvent être utilisées en mode fenêtré tout comme les autres applications bureautiques (WPF & WinForms). Cela augmente leur facilité d'utilisation beaucoup sur les ordinateurs non-tablette. Je crois que ce sera aussi l'avenir pour les applications bureautiques. Bien que, les logiciels WPF sont les applications de bureau traditionnelles (sans permission, seulement UAC). De toute façon, peu importe que vous appreniez WPF ou WinRT (en utilisant .Net) développement, vous finirez par apprendre les deux. Ils sont tous les deux XAML + C# (ou un autre langage .Net). J'apprenais juste WPF quand WinRT est sorti avec Windows 8. Je me suis senti chez moi, avec seulement quelques changements mineurs auxquels tu t'habitueras très bientôt. Pas sûr du scénario MVVM (liaison des données)dans WinRT si. J'apprends encore cet aspect du FPF moi-même.

la fenêtre 10 vient d'être lancée. Windows 8/8.Je n'ai pas vu autant de succès que Windows 7. Donc, si vous voulez construire un application qui a un public plus large, vous devriez aller avec WPF pour l'instant. Mais dans un futur proche, WinRT sera la voie à suivre.

Pour votre question, "qui technologies permettant une utilisation sur 7 de la Fenêtre , windows 8(pc de Bureau et Métro), la Fenêtre de Téléphone, (Et Windows 10!), et même x-box.", la seule réponse est Windows Universal Apps. C'est précisément la raison pour laquelle ce cadre a été élaboré. Une technologie à utiliser pour développer des applications pour tous les appareils. De Bureau, Tablettes, Téléphones (y compris Android utilisant Xamarin livré avec Visual Studio 2015), Xbox, et IoT (Internet des objets).

25
répondu Prateek Jain 2015-12-12 10:28:53

je vais essayer de répondre à une seule de vos questions:

est-ce que Windows Forms est totalement mort?

non, la technologie Windows forms n'est pas morte. Je vais vous dire pourquoi. WPF et XAML est une technologie très complète et complexe et vous pouvez construire une interface utilisateur très agréable. Mais! Cette technologie exige une connaissance approfondie. Pour les mises en page de base, vous n'avez pas besoin de beaucoup de connaissance, mais pour certaines mises en page avancées, vous devriez avoir une connaissance profonde et quand J'ai commencé avec cette technologie et j'ai passé beaucoup de temps à chercher quelques conseils sur google. Donc, quand j'ai besoin de quelques formes simples pour l'entrée d'utilisateur, je choisis toujours la technologie des formes de Windows qui est très simple et simple. C'est aussi la raison pour laquelle cette technologie est très efficace lorsqu'venir au monde. Lorsque vous commencez avec WPF, vous avez également besoin de savoir ce qui est MVVM modèle de conception et certains programmeurs non expérimentés sont confondus avec cela.

22
répondu Tomáš Opis 2015-12-05 14:50:58

c'est maintenant avril 2016 et il n'y a toujours pas de réponse claire à cela. Nous sommes en train de mettre au point une application de suivi des performances en temps réel très moderne qui doit rendre plusieurs graphiques et affichages, mélangés avec du texte et divers autres graphiques. Notre application est C#, WPF avec .net Framework 4.5.2 mais nous sommes encore en train d'écrire certains composants en utilisant WinForms et GDI+ pour obtenir une performance qui est acceptable. Nous n'y sommes pas parvenus avec la WPF. Nous avons même développé quelques écrans dans L'application avec DirectX mais cela ajoute beaucoup de complexité que seule une petite partie de l'équipe peut supporter. La simplicité et la vitesse pure que nous pouvons obtenir de l'hébergement d'un affichage WinForms dans WPF et la vitesse de GDI+ nous donne ce dont nous avons besoin à la coûteuse de la structure de vue pure/modèle de vue avec avoir à traiter de diverses questions d'espace aérien. Notre application est assez spécialiste, et j'aimerais me débarrasser de WinForms tout mais malheureusement, ce n'est tout simplement pas possible dans notre cas. Pour pure performances vous aurez besoin D'aller soit DirectX ou WinForms.

16
répondu Gareth 2016-04-15 08:04:20

mes deux cents... si vous voulez de vraies applications universelles, c'est-à-dire des programmes qui peuvent fonctionner sur N'importe quel système d'exploitation de bureau, y compris Windows, WinForms est toujours le chemin à parcourir. Assurez-vous simplement de rester compatible CLR, et vous pouvez vous déployer sur Mac et Linux via Mono. Un énorme avantage. XAML peut être cool, mais il ne va pas être porté vers d'autres systèmes d'exploitation.

je trouve personnellement le sandboxed (quicksanded?) UWP modèle d'affaires terrifiant; il s'oppose à l'ouverture Windows est là depuis le début.

5
répondu Jeroen S 2016-10-31 21:11:44

c'est un vieux fil, mais un fil important avec les progrès actuels du .net framework, C# features, et l'attention accrue sur c# comme un choix de développement de jeu.

WPF n'est presque jamais choisi comme une plateforme de jeu c# en toute honnêteté. Les problèmes d'espace aérien de la WPF ont effrayé les gens assez rapidement. Je ne pense pas que beaucoup (s'il y en a) de titres majeurs ou de moteurs de jeux en flux principal soutiennent WPF comme plate-forme cible soit en raison de cela. WPF est une excellente plate-forme pour les lanceurs de jeux!

WinForms, bien que maintenant en mode maintenance, sera encore un choix valable pour les années à venir. Il est temps-testé et stable. De ce que j'ai vu, même en 2017, WinForms est toujours la plate-forme la plus courante choisie pour le développement de jeux basé sur c#.

en regardant données D'enquête Steam Hardware vous pouvez voir qu'au moment de la rédaction de cette réponse (juillet 2017), Windows 10 64-bit est maintenant la plateforme de jeu PC dominante à 50% de part de marché, suivi de Windows 7 64-bit à 32% et Windows 8.1 64-bit à presque 7%. Toutes les autres plates-formes OS la part de marché est si petite qu'elle ne vaut guère la peine d'envisager autre chose que ces trois-là.

avec cela étant l'état actuel du jeu PC, WinForms est le dénominateur le plus commun pour cibler les 3 principales plateformes PC. En regardant vers l'avenir, UWP sera la meilleure plate-forme cible pour le développement de c# game comme Windows 7 et 8 perdre des parts de marché importantes à Windows 10, à moins qu'un nouveau la plate-forme arrive qui la remplace. C'est seulement par les chiffres.

si le choix se base sur le meilleur niveau de compatibilité par plate-forme D'OS au lieu de soutenir la part de marché maximale, les choix seraient plus comme:

  • Windows 10: UWP
  • Windows 8.1: WinRT or Windows Store
  • Windows 7: WinForms

la plupart des autres réponses sont centrées autour de la norme développement d'Applications windows mais le développement de jeux est un domaine très différent et différents facteurs influenceront vos choix, tels que le système D'exploitation cible et ce que votre choix D'API graphiques ou de moteur de jeu supporte le mieux.

4
répondu Mike Johnson 2017-07-18 09:54:10

WinRT a été sur le bureau depuis longtemps, j'écris WinRT, qui court sur mon bureau. Et sous Windows 10, ces applications prennent en charge les emplacements non-amarrés (fenêtrés comme vous pourriez les connaître traditionnellement).

Je ne recommande ni WinForms ni WPF à quiconque dès aujourd'hui. Ils devraient apprendre WinRT / XAML principalement. Et apprenez le Win32 / .net au besoin, selon la langue de votre choix..

" ils disent WinRT+XAML c'est pour Metro GUI building(fenêtre 8 tuiles chose!)" -- C'est un plus de l'abstraction, que c'est inutile. WinRT est un runtime, comme Win32, ce n'est pas seulement pour GUI, donc ce "ils disent" est complet BS. XAML est une couche UI (un peu comme XAML dans WPF) mais pour dire que C'est GUI Metro est également faux, il n'y a pas une telle chose comme GUI Metro plus. XAML est la couche Windows UI. Et "Windows 8 les tuiles chose!"est l'expression de la vision de tunnel de certains peuples. Ce serait comme si je disais que Win32 est une chose du menu Démarrer. Vous pouvez voyez comme cette déclaration est ridicule.

3
répondu Gavin Williams 2015-03-14 01:57:10

je travaille avec Microsoft technologies depuis plus de 10 ans. La chose la plus importante que j'ai apprise est de ne pas simplement écouter ce que Microsoft vous offre. Quand Microsoft dit ce est l'avenir, il a 50% de chance de se tromper. Microsoft fera certainement de son mieux pour promouvoir les produits sur lesquels ils ont investi, mais cela ne signifie pas que vous devez suivre. Voir ce qui arrive à WCF et Silverlight.

bien que WPF est une plateforme très agréable à apprendre, il a une énorme courbe d'apprentissage. Je ne pense pas qu'un développeur avec moins de 5 ans d'expérience de programmation puisse faire le bon WPF.

en suivant le modèle MVVM, vous constaterez que faire quelque chose de relativement facile dans WinForm peut devenir très difficile dans WPF. Comme colorier une cellule basée sur une condition après une mise à jour, ou faire défiler une rangée dans la vue et l'éclairer.

bien sûr, vous pouvez dire que vous n'avez pas à do MVVM. Mettez votre code derrière et faites en sorte que ça marche. Oui, ça va marcher, mais à quoi ça sert D'utiliser WPF? Pourquoi ne pas utiliser Win Form?

2
répondu Jason Ching 2016-12-23 05:32:29

j'ai rencontré cette question il y a un an. Je suis venu à la conclusion que wether XAML, WPF ou WinRT sont le bon environnement de développement pour commencer.

je recommande fortement D'utiliser .Net Framework pour la couche de données (y compris les Services Web et la couche RESTful (JSON) ) et HTML5/CSS3 pur et Javascript pour votre couche de présentation web.

sous Windows 10, vous pouvez intégrer n'importe quelle application web comme une application metro juste à l'extérieur de la boîte.

WinRT, XAML, WPF et les choses ms similaires fonctionnent seulement sur windows et a beaucoup de limitations.

donc après un an je suis toujours très heureux de ma décision de ne pas utiliser WinRT ou XAML pour mon nouveau projet.

1
répondu Khamis 2015-12-10 17:08:50