Quelle est la meilleure solution pour le développement Windows en C#, WPF ou UWP ?


Lorsque .NET est sorti en 2000, vous pouviez utiliser WinForms pour créer des applications de bureau pour Windows. Il donne accès à des contrôles natifs (c'est-à-dire qu'un bouton créé dans WinForms est en fait un contrôle de bouton Windows provenant de user32.dll) en enveloppant l'API Windows dans du code géré. Ceux-ci peuvent fonctionner dans n'importe quelle version de Windows qui a la version appropriée du cadre .NET installée, y compris jusqu'à Windows 10.

En 2006, WPF a été publié qui est une alternative à WinForms. WPF utilise XAML, qui est un langage basé sur XML, pour déclarer les éléments de l'interface utilisateur. Dans une application WPF simple, le fichier .xaml décrit l'interface graphique et le fichier code-behind décrit la logique. DirectX est utilisé pour dessiner ce qui est décrit dans le .xaml dans la fenêtre.


Comme Winforms, les programmes réalisés à l'aide de WPF peuvent fonctionner dans n'importe quelle version de Windows sur laquelle est installée la version appropriée du cadre .NET, y compris jusqu'à Windows 10. Notez que l'utilisation de XAML est totalement facultative. Les éléments d'interface utilisateur que vous décrivez à l'aide de XAML peuvent également être réalisés à l'aide de votre langage .NET C# ou VisualBasic.NET. Mais l'utilisation de XAML est généralement plus simple. Voir To XAML or not to XAML (MSDN Blogs).


Depuis 2012, avec Windows 8, il est possible de réaliser un nouveau type d'apps appelé metro/modern/windows-8/windows-store-apps. Ces apps sont similaires à WPF dans la mesure où elles utilisent XAML pour décrire l'interface graphique. Ces applications ne peuvent fonctionner que sous Windows 8, 8.1 et Windows 10. Windows 8.1 a ajouté quelques améliorations et fonctionnalités, mais est resté essentiellement le même. La même technologie a été utilisée pour créer des apps pour Windows Phone.

Avec la sortie de Windows 10, Microsoft a créé l'UWP (Universal Windows Platform) grâce à laquelle vous pouvez utiliser la même base de code pour cibler différents types d'appareils (bureau/mobile/xbox/IoT/holographique). Ces applications créées pour l'UWP sont similaires aux applications précédentes de Windows 8/8.1. Comme auparavant, XAML est utilisé pour décrire l'interface graphique.

Seulement pour les apps du Windows Store, il n'y a pas de rétrocompatibilité. La chronologie va de Windows 8 -> Windows 8.1 -> Windows 10/UWP. Une app réalisée en UWP ne peut fonctionner que sous Windows 10 et une app réalisée en Windows 8.1 ne peut pas fonctionner sous Windows 8.

.