Développement pour Windows 10 : comment choisir la techno adéquate

Si vous voulez développer une application desktop pour Windows 10, vous allez être bien obligé de choisir une technologie... En effet, il existe plusieurs environnements pour le faire.

Dans le jargon utilisateur, il n’y a que des applications Windows. En réalité, c'est plus complexe que cela... Il y a des applications Win32, UWP en C++, NET WinForms en C#/VB.NET, NET WPF en C#/VB.NET, NET UWP en C#/VB.NET ou WinUI3. Et si le sujet vous intéresse, la question qui vous brûle les lèvres c’est : Et je dois utiliser quoi ?

Sommaire des technologies

Tranchons dans le vif. Microsoft n’impose rien. Microsoft propose diverses solutions parues à une époque donnée :

  •  1990 : Win32 en C
  •  1995 : MFC en C++
  • 2001 : NET WInForms
  • 2006 : NET WPF
  • 2011 : NET UWP ou C++ UWP
  • 2019 : WinUI

Il n’y a rien de déprécié à part feu SilverLight qui était un sous-ensemble de WPF… Remarquez, je vous abrège vos souffrances, WPF est un flop. Son modèle MVVM est indebuggable et les applications qui ont fait ce choix le regrette (expériences de terrain et de grands groupes). Win32 et MFC sont des énormes applications legacy que l’on ne touche plus et qui le plus souvent ont été réécrites ou démembrées en applications Web… Les éditeurs logiciels sont les seuls à continuer à faire du Win32 car cela marche sur toutes les éditions de Windows et surtout parce qu'ils ont une base de code C/C++ importante.

WinForms est relativement ancien mais depuis NET Core, il revient en force. Microsoft a décidé de faire un nouvel éditeur pour WinForms en NET Core. WinForms revis. Remarquez, dans les entreprises, WinForms est très populaire car très facile à exploiter. Les librairies tierces comme DevExpress, Telerik, SyncFusion et autres comportent de nombreux contrôles à gérer simplement avec des événements.

Et le dernier c’est UWP et les applications du Store. Ce modèle est un fiasco. Osons le dire ! Il n’y a que Microsoft pour proposer des applications UWP via notamment les outils livrés avec Windows (Paint3D, Courrier, Calendrier, etc). Le modèle UWP et les nouvelles API WinRT sont un fiasco en termes d’adoption. Il n’y a que 2% d’applications UWP faites avec Visual Studio (source anonyme Microsoft Corp) : information remontée par la télémétrie Visual Studio qui est pire que le FSB ou la NSA en termes de traçage d’informations…

Et maintenant, au cours de la conférence Build 2020, Microsoft nous offre WinUI, le moyen de mettre les contrôles Windows 10 (voir mon article sur WinUI3) dans toutes nos applications : Win32, WinForms, WPF…

Que choisir ?

Le conseil que je vous donne n’engage que moi et non pas Microsoft. Pour Microsoft, WinUI3 est l’avenir mais le temps d’adoption est long et le XAML est complexe. Je préfère choisir pour le moment  WinForms pour NET Core. C’est une valeur sure et facile à maîtriser. La technologie doit être au service de l’individu. SI pour réaliser des opérations simples, il faut se taper la tête contre les murs sans documentation, je reste en WinForms, n’en déplaise à Monsieur Microsoft.

Conclusion

Faites simples, adoptez le modèle objet et la gestion événementielle. Faites des applications, faites du code qui est simple à comprendre et toujours efficace. Les grands manitous ont eu leur chance il y a 10 ans et ont loupé le coche avec WPF et XAML. Tant pis pour eux. Trop complexe, trop lourd, pas intuitif. WinForms pour NET Core est la lumière !