Vos applications Windows Forms et WPF sont-elles prêtes pour .NET Core 3.0 ?
Microsoft veut s'en assurer et sollicite les développeurs
Le 2018-08-09 15:07:23, par Michael Guilloux, Chroniqueur Actualités
Lors de la dernière édition de sa conférence Build en mai, Microsoft a fait une annonce qui a surpris plus d'un développeur : .NET Core 3.0 va prendre en charge le développement d'applications de bureau, mais cette nouveauté sera uniquement disponible pour Windows. Ainsi, avec .NET Core 3.0, les développeurs seront en mesure d'exécuter de nouvelles applications de bureau Windows ou des applications de bureau existantes sur .NET Core et profiter de tous les avantages de la plateforme. Lesquels avantages sont entre autres :
.NET Core a pourtant été présenté comme une version multiplateforme de .NET Framework. Microsoft a donc abandonné les technologies de Framework .NET liées à Windows afin que .NET Core soit ouvert à d'autres plateformes, notamment Linux et macOS. .NET Core n'offre donc pas de prise en charge de ASP.NET WebForms, Windows Forms et Windows Presentation Foundation (WPF). Ce qui ne fait pas l'affaire de nombreux développeurs, qui n'ont pas manqué d'exprimer leur besoin auprès de Microsoft. L'annonce du support des applications Windows desktop, plus précisément de Windows Forms et Windows Presentation Framework (WPF), est donc une réponse à la demande de ces derniers. Ce support sera ajouté sous la forme d'un ensemble de packages sous le nom de « Windows Desktop Packs ».
Maintenant que Microsoft a fait cette annonce, il faut s'assurer de la qualité de ce support, notamment en ce qui concerne le portage des applications existantes. Pour cela, le géant du logiciel met à la disposition des développeurs l'outil Portability Analyzer, pour leur permettre de savoir si leurs applications Windows Forms et WPF sont prêtes à être portées sur .NET Core 3.0.
« Nous voulons nous assurer que .NET Core 3.0 inclut toutes les API dont dépendent vos applications Windows Forms et WPF. Ainsi, afin de savoir quelles API sont utilisées, nous publions Portability Analyzer qui signalera l'ensemble des API référencées dans vos applications qui ne sont pas encore disponibles dans NET Core 3.0. Cette liste d'API sera envoyée à Microsoft et nous aidera à définir les API à intégrer [à .NET Core 3.0] avant sa livraison », explique l'équipe .NET dans un billet de blog.
L'analyseur de portabilité, qui est un outil open source, vise donc à simplifier votre expérience de portage, et pour cela, Microsoft invite les développeurs à le télécharger et l'exécuter sur leurs applications. « Afin que nous puissions connaître les API dont nos utilisateurs ont besoin, nous vous demandons d’exécuter l’outil qui nous aidera à fournir la meilleure expérience possible dans le portage de vos applications. En même temps, vous verrez à quel point vos applications sont portables, car l'outil génère une liste d'API référencées dans vos assemblys, qui pourraient ne pas être prises en charge dans .NET Core 3.0. »
Présentation de l’outil Portability Analyzer
L'exécution de l'outil fera deux choses. Elle va générer une feuille Excel qui signalera le niveau de compatibilité de votre projet avec .NET Core 3.0, en précisant les API spécifiques de votre projet qui ne sont pas actuellement prises en charge. Mais elle va également envoyer ces mêmes données à l'équipe .NET de Microsoft, pour qui cela servira à déterminer quelles API sont nécessaires pour le plus grand nombre. À part ces informations, aucune autre (ni code source ni binaires) ne sera envoyée de votre ordinateur à Microsoft. L'équipe .NET insiste également sur le fait que l'ajout de nouvelles API à .NET Core 3.0 se fera en fonction des informations collectées. Les développeurs sont donc invités à télécharger et exécuter l'outil, pour s'assurer que leurs applications et leurs API spécifiques seront prises en compte.
Télécharger l'outil Portability Analyzer sur GitHub
Et vous ?
Depuis l'annonce de Microsoft en mai, avez-vous étudié les avantages et inconvénients du support des applications Windows desktop sur .NET Core 3.0 ?
Si oui, pouvez-vous les partager et les expliquer ?
Comptez-vous déjà développer de nouvelles applications Windows Forms ou WPF avec .NET Core 3.0 ou porter des applications existantes ? Dans quels buts ?
Voir aussi :
.NET Framework 4.7.2 est disponible, avec le support de l'injection de dépendance dans les Web Forms et la sécurisation de cookies avec SameSite
La préversion de la compilation hiérarchisée est disponible dans .NET Core 2.1, pour tirer le meilleur parti du démarrage et de l'exécution d'une app
Microsoft annonce la sortie de .NET Core 2.1, avec de nombreux ajouts et améliorations qui viennent enrichir cet environnement
.NET Core 3.0 offrira un support du développement d'applications de bureau, mais sur Windows uniquement
Microsoft annonce la disponibilité de .NET Core 2.1 RC1, cette version peut déjà être utilisée en production
Source : Blog .NET
- des améliorations de performances et mises à jour du runtine ;
- la facilité de tester une nouvelle version de .NET Core juste sur une application de votre ordinateur ;
- l’activation à la fois du déploiement global et du déploiement local des applications ;
- la prise en charge des outils CLI de .NET Core ;
- l’utilisation du nouveau .csproj et la gestion des packages.
.NET Core a pourtant été présenté comme une version multiplateforme de .NET Framework. Microsoft a donc abandonné les technologies de Framework .NET liées à Windows afin que .NET Core soit ouvert à d'autres plateformes, notamment Linux et macOS. .NET Core n'offre donc pas de prise en charge de ASP.NET WebForms, Windows Forms et Windows Presentation Foundation (WPF). Ce qui ne fait pas l'affaire de nombreux développeurs, qui n'ont pas manqué d'exprimer leur besoin auprès de Microsoft. L'annonce du support des applications Windows desktop, plus précisément de Windows Forms et Windows Presentation Framework (WPF), est donc une réponse à la demande de ces derniers. Ce support sera ajouté sous la forme d'un ensemble de packages sous le nom de « Windows Desktop Packs ».
Maintenant que Microsoft a fait cette annonce, il faut s'assurer de la qualité de ce support, notamment en ce qui concerne le portage des applications existantes. Pour cela, le géant du logiciel met à la disposition des développeurs l'outil Portability Analyzer, pour leur permettre de savoir si leurs applications Windows Forms et WPF sont prêtes à être portées sur .NET Core 3.0.
« Nous voulons nous assurer que .NET Core 3.0 inclut toutes les API dont dépendent vos applications Windows Forms et WPF. Ainsi, afin de savoir quelles API sont utilisées, nous publions Portability Analyzer qui signalera l'ensemble des API référencées dans vos applications qui ne sont pas encore disponibles dans NET Core 3.0. Cette liste d'API sera envoyée à Microsoft et nous aidera à définir les API à intégrer [à .NET Core 3.0] avant sa livraison », explique l'équipe .NET dans un billet de blog.
L'analyseur de portabilité, qui est un outil open source, vise donc à simplifier votre expérience de portage, et pour cela, Microsoft invite les développeurs à le télécharger et l'exécuter sur leurs applications. « Afin que nous puissions connaître les API dont nos utilisateurs ont besoin, nous vous demandons d’exécuter l’outil qui nous aidera à fournir la meilleure expérience possible dans le portage de vos applications. En même temps, vous verrez à quel point vos applications sont portables, car l'outil génère une liste d'API référencées dans vos assemblys, qui pourraient ne pas être prises en charge dans .NET Core 3.0. »
Présentation de l’outil Portability Analyzer
L'exécution de l'outil fera deux choses. Elle va générer une feuille Excel qui signalera le niveau de compatibilité de votre projet avec .NET Core 3.0, en précisant les API spécifiques de votre projet qui ne sont pas actuellement prises en charge. Mais elle va également envoyer ces mêmes données à l'équipe .NET de Microsoft, pour qui cela servira à déterminer quelles API sont nécessaires pour le plus grand nombre. À part ces informations, aucune autre (ni code source ni binaires) ne sera envoyée de votre ordinateur à Microsoft. L'équipe .NET insiste également sur le fait que l'ajout de nouvelles API à .NET Core 3.0 se fera en fonction des informations collectées. Les développeurs sont donc invités à télécharger et exécuter l'outil, pour s'assurer que leurs applications et leurs API spécifiques seront prises en compte.
Et vous ?
Voir aussi :
Source : Blog .NET
-
François DORINExpert éminent séniorNon. Remet dans le contexte : pas en .NET .
Envoyé par hotcryx
- GTK#. Binding de GTK, dont le portage Windows est douloureux (bugs, comportement différents, etc...). Bref, pas vraiment utilisable pour faire un code véritablement portable ;
- Winform. Marche très bien sous Windows (normal), moins bien sous Linux et MacOS car l'implémentation faite par Mono n'est malheureusement pas fidèle 100% (malgré une très bonne fidélité en général).
Bref, aujourd'hui, à moins de se tourner vers une solution comme Electron, il n'existe pas de framework ou de binding en .NET permettant de faire des applications graphiques de manière portable. Les différents projets existant sont abandonné, dans un état de proof of concept, en cours de développement ou bogué.
Donc je réitère : pas de toolkit graphique stable et utilisable pour faire des applications graphiques en .NET, à moins d'utiliser une solution type Electron.le 10/08/2018 à 11:02 -
DasoftMembre actif@matthius : ta totale ignorance démontre que ton savoir-faire n'est qu'à ses débutsle 04/12/2019 à 10:33
-
frfanchaMembre éprouvéle 10/08/2018 à 7:45
-
micka132Expert confirmé
Envoyé par Wikipedia le 21/12/2018 à 9:30 -
François DORINExpert éminent séniorJe veux bien des info là dessus, car je n'ai jamais, et je dis bien jamais, entendu parlé de .NET comme étant COM3 (et j'ai beau faire des recherches, je ne trouve rien sur le sujet).
Envoyé par bartrennes
Ensuite, les techno évoluent, obligeant parfois à prendre des décisions radicales. Ce fut le cas pour Silverlight par exemple, où c'est l’émergence de HTML5/CSS/JS qui a rendu cette techno complètement inutile. De plus, et comme déjà évoqué, comparer Win32 et WPF/UWP est un non sens.
Il faut également arrêter de voir un arrêt d'évolution d'une technologie comme un signe indiquant qu'elle est dépréciée : quand une techno est mature, pourquoi continuer sans cesse de la faire évoluer, avec les risques que cela induit quand la pérennité est un élément clé ?
.NET core 3 c'est très bien, mais a des limites, notamment si on souhaite faire un programme graphique portable, ou du point de vue de la pérennité (les professionnels aiment ça, car ils n'ont pas envie de redévelopper ou mettre à jour une application qui fonctionnent très bien juste parce qu'une brique a été mise à jour, avec les risques que cela induit). Passer de .NET Core 2 à 3 nécessite de retester entièrement ses applications pour s'assurer qu'il n'y a pas de changements subtils.le 21/12/2018 à 15:28 -
Pol63Expert éminent séniorfaut arrêter de prendre vos cas pour des généralités
ce n'est pas parce que vous ne comprenez pas .net, wpf ou uwp (ou leur interet) que c'est le cas de tout le monde
.net par rapport à vb6 ca fait diminuer d'entre 5 et 20 fois le nombre de lignes de code grace à la POO, linq et autres, ca permet donc de coder plus vite, et aussi d'avoir du code plus maintenable et quand on est sur un gros projet c'est juste vital
wpf (et uwp par extension) ca permet encore de baisser le nombre de lignes de code, ca permet de faire plus vite son interface, ca permet de faire une interface plus dynamique plus facilement, ca permet de bien séparer ui et code
99% de ce qu'on peut faire visuellement en wpf est faisable en winforms certes, mais à quel prix ...
alors oui wpf c'est différent à utiliser de winforms, mais la POO c'est aussi différent du code procédural d'il y a 25 ans
il faut prendre le temps d'essayer, de comprendre la philosophie, pour voir si ca correspond à notre besoin et si on apprécie le langage
pour passer d'un langage à un autre il faut souvent désapprendre des façons de faire, mais pour un nouveau qui se lance sur du XAML peut etre que ca sera aussi intuitif pour lui que controls.add l'était pour nous en winforms à nos débutsle 29/12/2018 à 12:16 -
Pol63Expert éminent séniortu n'as pas compris la news alors
.net core est fait pour être portable
.net core n'a pas de brique graphique
.net core 3 permettra de faire des exe winforms et wpf mais qui ne tourneront que sous windows.
donc :
- winforms aussi si tu ne veux pas de wpf
- pas multiplateforme tout comme avec .net framework 4.x
-.net core n'aura toujours pas de brique graphique
et la plupart du code est compatible donc pas forcément de code à réécrire, c'est juste si tu utilisais des trucs qui ne sont pas dans .net core
certains pourront basculer une appli winforms de 4.x vers core 3 sans rien réécrire
donc je ne comprends pas ton histoire que ms veut te forcer à faire du xaml et que tu vas réécrire 50% du code ...
quant à l'utilité de tout faire différemment en wpf qu'en Windows forms il y en a une même si tu ne l'as pas compris, tout comme il y a eut une un jour une utilité à inventer le C++ après le Cle 29/12/2018 à 14:34 -
François DORINExpert éminent séniorLa mort de Windows 10 Mobile n'a rien à voir avec cela. La mort de Windows 10 mobile est surtout dû à l'arriver tardif de Microsoft sur le marché. Avec une part de marché de quelques pourcents seulement face aux mastodontes iOS/Android, ils n'ont rien pu faire, et se sont retrouver dans le schéma classique où le serpent se mord la queue : il n'y a pas d'application sur Windows 10 mobile car il n'y a qu'une faible part du marché, et il n'y a qu'une faible part de marché car la plupart des applications n'existent pas sous Windows 10 Mobile. End of Story.
Tu ne vois pas d'avantages à .NET par rapport à du code Win32 classique. C'est dommage. Je peux te citer :
- sécurisation (langage à VM, fini les libérations de mémoire et les buffers overflow) ;
- beaucoup moins de ligne de code (super pour la maintenance et la rapidité d'écriture des logiciels) ;
- interopérabilité entre les différents langages supportant .NET de manière totalement transparente ;
- indépendant de l'architecture cible (x86, x64, ou même ARM maintenant), sauf cas très particulier.
Au sujet du XAML, un des objectifs de séparation de l'UI et du code était de permettre de séparer les tâches de développement des tâches de conception graphique. Le designer n'a alors plus besoin d'être développeur (chose nécessaire avec WinForm, même si le designer de Visual Studio aide pas mal, j'ai toujours été obligé de passer par du code à un moment ou à un autre dans une application un tant soit peu complexe).
Enfin, .NET Core ne signifie pas la mort de .NET classique. Il faut arrêter de cataloguer des produits/techno comme obsolète car de nouvelles sortent. J'entends depuis des lustres que Win32 est obsolète. Foutaise !!!! Nombre d'actions spécifiques ne peuvent se faire que via l'API Win32 ! Le fait que Microsoft ait choisi de privilégier .NET Core pour le côté portabilité ne signifie pas la mort du Framework .NET. Il a atteint une certaine maturité aujourd'hui, et les ajours niveau API sont largement couvert pour la quasi totalité des besoins.le 30/12/2018 à 22:02 -
micka132Expert confirméEn fait si, il y a Xamarin pour du multi-plateforme utile : le mobile.
Les IHM sur du linux desktop ca touche tellement peu de cas que c'est s'attirer beaucoup d’emmerde pour pas grand chose.le 30/09/2019 à 12:27 -
freesketMembre du ClubXamarin.Forms est multiplateforme : Windows UWP, IOS, Android mais aussi (en preview pour le moment) Linux (GTK), MacOs et Windows desktop (WPF) :
https://docs.microsoft.com/en-us/xam...latform/other/le 01/10/2019 à 8:03