J'essaie d'avoir un aperçu des différentes technologies, à utiliser lors de la création d'interfaces graphiques dans le monde Windows.
Pour le contexte, je suis en train de créer un petit jeu multijoueur sur plateforme 2D. (Juste à des fins 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 Windows Forms.
Ma compréhension est que, ici en 2015, Windows Forms est totalement mort?
Dans ces autres questions de stackover, ils disent que WinRT + XAML est pour la construction d'interface graphique Metro (chose de tuiles Windows 8!), Et il semble que WPF est quelque chose utilisé uniquement pour le bureau dans Windows 7/8 et est proche de Silverlight.
- Le bureau est l'endroit où vivent les anciennes applications (rouge. WFP).
- La nouvelle classe d'applications, les applications Metro, peut être créée de différentes manières, notamment par VB.NET, C # ou C ++. Ces trois options de langage peuvent utiliser XAML pour créer l'interface utilisateur. L'alternative consiste à utiliser JavaScript / HTML5 / CSS pour le développement de l'interface utilisateur et du code d'application.
Ma vraie question est la suivante: n'y a-t-il pas UN seul bon moyen de créer des interfaces graphiques dans le monde Windows?
Et sinon, quelles technologies faut-il utiliser sur Windows 7, Windows 8 (bureau et métro), Windows Phone, (et Windows 10!), Et même x-box ...
Est-ce à différentes technologies à comparer de cette façon?
À votre avis, quelle est la bonne chose à faire pour investir du temps?
la source
Réponses:
Il y en a beaucoup ici, mais voici:
En ce qui concerne ce sur quoi passer du temps, cela dépend de ce que vous visez :). L'apprentissage de WPF / UWP + XAML vous apportera de nombreux avantages si vous voulez rester "à jour" dans le développement de l'interface graphique .NET, c'est donc ce que je ferais. WPF a le plus de fonctionnalités, donc en commençant par là, il vous suffit de trouver des solutions de contournement 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). Cela fonctionne très bien avec les technologies basées sur XAML et vous permet de partager beaucoup de logique entre vos applications WPF et UWP. La même logique peut également être utilisée si vous développez éventuellement des applications Xamarin pour iOS / Android, etc.
Notez que pour un véritable développement de jeu, vous aurez besoin d'un cadre de jeu réel (comme Unity3D ou même XNA). Vous pouvez le faire dans WPF, et c'est un meilleur choix que Winforms, mais aucun n'est vraiment destiné aux jeux.
la source
RenderTransform
,Viewport3D
et autres. Ils sont accélérés par le matériel.C'est un fil assez ancien, mais comme je l'ai rencontré via google (par intérêt), peut-être que quelqu'un d'autre pourrait également atteindre ici. C'est une question qui est posée encore et encore par les nouveaux programmeurs. Je voudrais donc également répondre à quelques points, maintenant que Windows 10 est officiellement publié.
Premièrement, il ne faut plus commencer avec Windows Forms. C'est la technologie la plus mature pour le moment, mais il n'y aura pas de développement supplémentaire de Windows Forms, c'est seulement en phase de maintenance maintenant. WPF 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é comme les autres applications de bureau (WPF et WinForms). Cela augmente considérablement leur convivialité sur les ordinateurs autres que les tablettes. Je pense que ce sera également l'avenir des applications de bureau. Bien que les logiciels WPF soient les applications de bureau traditionnelles (sans autorisation, uniquement UAC). Quoi qu'il en soit, peu importe que vous appreniez le développement WPF ou WinRT (en utilisant .Net), vous finirez par apprendre les deux. Ils sont tous les deux XAML + C # (ou un autre langage .Net). J'étais en train d'apprendre WPF lorsque WinRT est sorti avec Windows 8. Je me suis senti comme chez moi, seulement quelques changements mineurs auxquels vous vous habituerez très bientôt. Pas sûr du scénario MVVM (liaison de données) dans WinRT. J'apprends toujours cet aspect de WPF moi-même.
La fenêtre 10 vient de se lancer. Windows 8 / 8.1 n'a pas connu autant de succès que Windows 7. Donc, si vous souhaitez créer une application qui a un public plus large, vous devriez opter pour WPF pour le moment. Mais dans un proche avenir, WinRT sera la voie à suivre.
Pour votre question, «quelles technologies faut-il utiliser sur
Windows 7, Windows 8 (bureau et métro), Windows Phone, (et Windows 10!), Et même x-box.», La seule réponse est Windows Universal Apps. C'est la raison exacte pour laquelle ce cadre a été développé. Une technologie à utiliser pour développer des applications pour tous les appareils. Ordinateur de bureau, tablette, téléphones (y compris Android utilisant Xamarin fourni avec Visual Studio 2015), Xbox et IoT (Internet des objets).la source
Je vais essayer de répondre à une seule de vos questions:
Windows Forms est-il totalement mort?
Non, la technologie des formulaires Windows n'est pas morte. Je vais vous dire pourquoi. WPF et XAML sont des technologies très complètes et complexes et vous pouvez créer une très belle interface utilisateur. Mais! Cette technologie nécessite une connaissance approfondie. Pour les mises en page de base, vous n'avez pas besoin de beaucoup de connaissances, mais pour certaines mises en page avancées, vous devez avoir des connaissances approfondies et lorsque j'ai commencé avec cette technologie et passé beaucoup de temps à rechercher des conseils sur Google. Ainsi, lorsque j'ai besoin de formulaires simples pour la saisie de l'utilisateur, je choisis toujours la technologie Windows Forms qui est très simple et directe. C'est aussi la raison pour laquelle cette technologie a eu beaucoup de succès lorsqu'elle est venue au monde. Lorsque vous commencez avec WPF, vous devez également savoir ce qu'est le modèle de conception MVVM et certains programmeurs non expérimentés sont confondus avec cela.
la source
Nous sommes maintenant en avril 2016 et il n'y a toujours pas de réponse claire à cela. Nous développons une application de bureau de surveillance 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 écrivons toujours certains composants à l'aide de WinForms et GDI + pour obtenir des performances acceptables. Nous ne l'avons tout simplement pas atteint avec WPF. Nous avons même développé quelques écrans dans l'application avec DirectX, mais cela ajoute beaucoup de complexité que seuls quelques membres de l'équipe peuvent prendre en charge. La simplicité et la vitesse pure que nous pouvons obtenir en hébergeant un écran WinForms dans WPF et la vitesse de GDI + nous donnent ce dont nous avons besoin au coût de la structure pure View / ViewModel, ainsi que de faire face à divers problèmes d'espace aérien. Notre application est assez spécialisée et j'aimerais bien me débarrasser de WinForms, mais malheureusement, ce n'est pas encore possible dans notre cas. Pour des performances pures, vous devrez utiliser DirectX ou WinForms.
la source
Mes deux cents ... si vous voulez de véritables applications universelles, c'est-à-dire des programmes qui peuvent fonctionner sur TOUT système d'exploitation de bureau, y compris Windows, WinForms est toujours la voie à suivre. Assurez-vous simplement de rester compatible avec CLR et vous pouvez déployer sur Mac et Linux via Mono. Un énorme avantage. XAML peut être cool, mais il ne sera pas porté sur d'autres systèmes d'exploitation.
Personnellement, je trouve terrifiant le modèle d'entreprise UWP en bac à sable (à sable mouvant?); il s'oppose à l'ouverture que Windows défend depuis le tout début.
la source
Je travaille avec les technologies Microsoft depuis plus de 10 ans. La chose la plus importante que j'ai apprise n'est pas seulement d'écouter ce que Microsoft vous propose. Lorsque Microsoft dit c'est l'avenir, il a 50% de chances 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 devriez suivre. Découvrez ce qu'il advient de WCF et de Silverlight.
Bien que WPF soit une plate-forme très intéressante pour apprendre, elle a une énorme courbe d'apprentissage. Je ne pense pas qu'un développeur avec moins de 5 ans d'expérience en programmation puisse bien faire 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 colorer une cellule en fonction d'une condition après une mise à jour, ou faire défiler une ligne dans la vue et la mettre en surbrillance.
Bien sûr, vous pouvez dire que vous n'avez pas à faire MVVM. Mettez simplement votre code dans le code et faites-le fonctionner. Oui, cela fonctionnera, mais quel est l'intérêt d'utiliser WPF? Pourquoi ne pas simplement utiliser Win Form?
la source
Il s'agit d'un ancien thread mais important avec la progression actuelle du framework .NET, les fonctionnalités c # et une concentration accrue sur c # comme choix de développement de jeu.
WPF n'est presque jamais choisi comme plate-forme de jeu ac # en toute honnêteté. Les problèmes d'espace aérien WPF ont effrayé les gens assez rapidement. Je ne pense pas que beaucoup de titres majeurs (le cas échéant) ou de moteurs de jeux principaux prennent en charge WPF en tant que plate-forme cible pour cette raison. WPF est cependant une excellente plate-forme pour les lanceurs de jeux!
WinForms, alors qu'il est maintenant en mode maintenance, sera toujours un choix valable pour les années à venir. C'est éprouvé et stable. D'après ce que j'ai vu, même en 2017, WinForms est toujours la plate-forme la plus couramment choisie pour le développement de jeux basés sur c #.
En regardant les données de Steam Hardware Survey, vous pouvez voir qu'au moment de la rédaction de cette réponse (juillet 2017), Windows 10 64 bits est maintenant la plate-forme de jeu dominante sur PC avec 50% de part de marché, suivi de Windows 7 64 bits à 32% et Windows 8.1 64 bits à près de 7%. La part de marché de toutes les autres plates-formes OS est si petite qu'il vaut à peine la peine d'envisager autre chose que ces trois.
Étant donné l'état actuel du jeu sur PC, WinForms est le dénominateur le plus courant pour cibler les 3 principales plates-formes PC. En ce qui concerne l'avenir, UWP sera la meilleure plate-forme cible pour le développement de jeux c #, car Windows 7 et 8 perdent une part de marché significative au profit de Windows 10, à moins qu'une nouvelle plate-forme ne la remplace. C'est donc juste en chiffres.
Si vous choisissez en fonction du meilleur niveau de compatibilité par plate-forme de système d'exploitation au lieu de prendre en charge une part de marché maximale, les choix seraient plutôt les suivants:
La plupart des autres réponses concernent le développement d'applications Windows standard, 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 graphique ou de moteur de jeu prend en charge le mieux.
la source
WinRT est sur le bureau depuis longtemps, j'écris WinRT, qui fonctionne sur mon bureau. Et sous Windows 10, ces applications prendront en charge les emplacements non ancrés (fenêtrés comme vous les connaissez peut-être traditionnellement).
Je ne recommanderais WinForms ou WPF à personne qui commence aujourd'hui. Ils devraient apprendre WinRT / XAML principalement. Et apprenez un peu de Win32 / .net selon leurs besoins, en fonction de la langue de leur choix.
"Ils disent que WinRT + XAML est destiné à la construction de l'interface graphique Metro (chose de Window 8 tiles!)" - C'est une telle sur-abstraction, que c'est inutile. WinRT est un runtime, comme Win32, ce n'est pas seulement pour l'interface graphique, donc ce "qu'ils disent" est BS complet. XAML est une couche d'interface utilisateur (un peu comme XAML dans WPF) mais dire que c'est l'interface graphique Metro est également une erreur, il n'y a plus d'interface graphique Metro. XAML est la couche d'interface utilisateur Windows. Et "chose de tuiles Windows 8!" exprime la vision tunnel de certains peuples. Ce serait comme moi de dire que Win32 est une chose du menu Démarrer. Vous pouvez voir à quel point cette déclaration est ridicule.
la source
J'ai rencontré cette question il y a un an. Je suis arrivé à la conclusion que XAML, WPF ou WinRT sont le bon environnement de développement pour commencer.
Je recommande vivement d'utiliser .Net Framework pour la couche de données (y compris les services Web et la couche RESTful (JSON)) et HTML5 / CSS3 et Javascript purs pour votre couche de présentation Web.
Dans Windows 10, vous pouvez intégrer n'importe quelle application Web en tant qu'application Metro dès la sortie de la boîte.
WinRT, XAML, WPF et des trucs similaires ms ne fonctionnent que sur Windows et ont 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.
la source