Choisir votre plateforme d’applicationChoose your app platform

Lorsque vous souhaitez créer une nouvelle application de bureau pour les PC Windows, la première décision que vous apportez est la plateforme sur laquelle application à utiliser.When you want to create a new desktop application for Windows PCs, the first decision you make is which application platform to use. Windows fournit quatre plateformes d’application principale, chacune avec différents points forts :Windows provides four main application platforms, each with different strengths:

Toutes ces plateformes d’application vous permettent de créer des applications de bureau tels que Word, Excel et Photoshop qui s’exécutent dans le classique Windows desktop et take pleinement parti des fonctionnalités spécifiques de cet environnement.All of these application platforms let you create desktop apps like Word, Excel, and Photoshop that run in the classic Windows desktop and take full advantage of that environment's specific features. Toutefois, certaines de ces plateformes partagent certaines caractéristiques et sont mieux adaptés à certains types d’applications :However, some of these platforms share some traits and are better suited for certain types of applications:

  • UWP, WPF et Windows Forms.UWP, WPF, and Windows Forms. Ces plateformes fournissent des environnements d’exécution managé (le Runtime Windows pour UWP et .NET pour Windows Forms et WPF) de nombreux avantages, notamment dans les domaines de la productivité des développeurs, l’interface utilisateur sophistiquée et personnalisable et la sécurité de l’application.These platforms provide managed runtime environments (the Windows Runtime for UWP, and .NET for Windows Forms and WPF) with many benefits, especially in the areas of developer productivity, sophisticated and customizable UI, and application security. Étant donné que ces infrastructures prennent en charge les concepteurs visuels et balisage de l’interface utilisateur pour créer rapidement de l’interface utilisateur, ils sont particulièrement bien adaptées pour les applications line-of-business.Because these frameworks support visual designers and UI markup for rapidly creating UI, they are particularly well-suited for line-of-business applications.

  • API Win32.Win32 API. L’API Win32 (également appelé l’API Windows) est une plateforme d’origine natif C /C++ les applications Windows qui nécessitent un accès direct au matériel et de Windows.The Win32 API (also called the Windows API) is the original platform for native C/C++ Windows applications that require direct access to Windows and hardware. Il fournit une expérience de développement de premier ordre sans en fonction d’un environnement d’exécution managé comme .NET et WinRT.It provides a first-class development experience without depending on a managed runtime environment like .NET and WinRT. Cela rend l’API Win32 de la plate-forme de choix pour les applications nécessitant le plus haut niveau de performances et l’accès direct au matériel système.This makes the Win32 API the platform of choice for applications that need the highest level of performance and direct access to system hardware.

Cet article décrit ces plateformes plus en détail et vous permet de déterminer le mieux adapté pour votre application.This article describes these platforms in more detail and helps you determine the best one for your application.

Notes

Quelle que soit la plateforme sur laquelle application que vous choisissez, vous pouvez utiliser les nombreuses fonctionnalités de la plateforme Windows universelle (UWP) pour offrir une expérience moderne dans votre application sur Windows 10.No matter which app platform you choose, you can use many features of the Universal Windows Platform (UWP) to deliver a modern experience in your app on Windows 10. Par exemple, même si votre application de bureau est générée à l’aide de WPF, Windows Forms ou l’API Win32, vous pouvez utiliser toujours son apparues avec UWP, comme le déploiement de package MSIX et les contrôles UWP XAML de nombreuses fonctionnalités.For example, even if your desktop app is built using WPF, Windows Forms, or the Win32 API, you can still use many features first introduced with UWP, such as MSIX package deployment and UWP XAML controls. Pour plus d’informations, consultez moderniser vos applications de bureau.For more information, see Modernize your desktop apps.

UWPUWP

UWP est la plateforme de pointe pour jeux et applications Windows 10.UWP is the leading-edge platform for Windows 10 applications and games. Il est une plateforme hautement personnalisable qui utilise le balisage XAML pour séparer l’expérience utilisateur (présentation) à partir du code (logique métier).It's a highly customizable platform that uses XAML markup to separate UX (presentation) from code (business logic). UWP est adapté aux applications de bureau qui requièrent une interface utilisateur sophistiquée, personnalisation des styles et des scénarios de graphiques.UWP is suitable for desktop applications that require a sophisticated UI, styles customization, and graphics-intensive scenarios. UWP a également une prise en charge intégrée pour le Fluent Design System pour la valeur par défaut, l’expérience utilisateur rencontrer et fournit l’accès à la Windows Runtime (WinRT) API.UWP also has built-in support for the Fluent Design System for the default UX experience and provides access to the Windows Runtime (WinRT) APIs. En adoptant Fluent, UWP prend automatiquement en charge les méthodes d’entrée courantes telles que l’encre, tactile, gamepad, clavier et souris.By adopting Fluent, UWP automatically supports common input methods such as ink, touch, gamepad, keyboard, and mouse.

Non seulement vous pouvez utiliser UWP pour créer des applications de bureau pour les PC Windows, mais UWP est également la seule plateforme prise en charge pour les applications Xbox, HoloLens et Surface Hub.Not only can you use UWP to create desktop applications for Windows PCs, but UWP is also the only supported platform for Xbox, HoloLens, and Surface Hub applications. UWP est notre plateforme d’application plus récente, de pointe.UWP is our newest, leading-edge application platform.

Pour plus d’informations sur UWP, consultez prise en main les applications Windows 10.For more information about UWP, see Get started with Windows 10 apps.

WPFWPF

WPF est la plateforme établie pour les applications Windows gérées avec un accès pour le .NET Framework complet, et il utilise également les balisage XAML pour séparer l’expérience utilisateur à partir du code.WPF is the established platform for managed Windows applications with access to the full .NET Framework, and it also uses XAML markup to separate UX from code. Cette plateforme est conçue pour les applications de bureau qui requièrent une interface utilisateur sophistiquée, personnalisation des styles et des scénarios de graphiques.This platform is designed for desktop applications that require a sophisticated UI, styles customization, and graphics-intensive scenarios. Compétences de développement WPF sont semblables aux compétences de développement UWP, migration de WPF vers les applications UWP est plus facile que la migration à partir de Windows Forms.WPF development skills are similar to UWP development skills, so migration from WPF to UWP apps is easier than migration from Windows Forms.

Pour plus d’informations sur WPF, consultez mise en route (WPF).For more information about WPF, see Getting started (WPF).

Windows FormsWindows Forms

Windows Forms est la plate-forme d’origine pour les applications Windows gérées avec un modèle d’interface utilisateur légère et l’accès pour le .NET Framework complet.Windows Forms is the original platform for managed Windows applications with a lightweight UI model and access to the full .NET Framework. Il convient parfaitement à permettant aux développeurs de commencer rapidement à créer des applications, même pour les développeurs qui découvrent la plateforme.It excels at enabling developers to quickly get started building applications, even for developers new to the platform. Il s’agit d’une plate-forme de développement d’applications basée sur des formulaires rapides avec une grande collection intégrée de contrôles de glisser-déplacer visuel et non visuel.This is a forms-based, rapid application development platform with a large built-in collection of visual and non-visual drag-and-drop controls. Windows Forms n’utilise pas de XAML, donc vous décidez ultérieurement d’étendre votre application UWP implique une réécriture complète de votre interface utilisateur.Windows Forms does not use XAML, so deciding later to extend your application to UWP entails a complete re-write of your UI.

Pour plus d’informations sur les Windows Forms, consultez mise en route avec Windows Forms.For more information about Windows Forms, see Getting started with Windows Forms.

Comparaison de la plateforme : UWP, WPF et Windows FormsPlatform comparison: UWP, WPF, and Windows Forms

Le tableau suivant compare les différentes caractéristiques des Windows Forms, WPF et UWP en détail.The following table compares various characteristics of Windows Forms, WPF, and UWP in detail.

Fonctionnalité ou scénarioFeature or scenario UWPUWP WPFWPF Windows FormsWindows Forms
Versions prises en chargeSupported versions Windows 10Windows 10 Windows 7 et versions ultérieuresWindows 7 and later Windows 7 et versions ultérieuresWindows 7 and later
TraductionLanguages C#, C++/WinRT, C++/CX, VB, JavaScriptC#, C++/WinRT, C++/CX, VB, JavaScript C#, C++/CLI (Extensions managées pour C++), F#, VBC#, C++/CLI (Managed Extensions for C++), F#, VB C#, C++/CLI (Extensions managées pour C++), F#, VBC#, C++/CLI (Managed Extensions for C++), F#, VB
Exécution de l’interface utilisateurUI runtime Natif (C++/WinRT et C++/CX) et gérées (.NET Native)Native (C++/WinRT and C++/CX) and managed (.NET Native) Managé (.NET Framework)Managed (.NET Framework)

Prise en charge de .NET Core 3 est bientôt disponibleSupport for .NET Core 3 is coming soon
Managé (.NET Framework)Managed (.NET Framework)

Prise en charge de .NET Core 3 est bientôt disponibleSupport for .NET Core 3 is coming soon
Open sourceOpen source Oui (bibliothèque d’interface utilisateur Windows uniquement)Yes (Windows UI Library only) Oui (.NET Core uniquement)Yes (.NET Core only) Oui (.NET Core uniquement)Yes (.NET Core only)
Prend en charge XAMLSupports XAML OuiYes OuiYes NonNo
Points fortsStrengths
  • Balisage XAML pour l’interface utilisateurXAML markup for UI
  • Expérience utilisateur riche et personnalisableRich and customizable UX
  • Vos bases de code existantes sont conformes .NET StandardYour existing code bases are .NET Standard compliant
  • Prise en charge de haute résolutionHigh DPI support
  • Prise en charge de plusieurs types d’entrée sur les appareils Windows (y compris tactiles, pen, gamepad, souris et clavier)Support for multiple input types across Windows devices (including touch, pen, gamepad, mouse, and keyboard)
  • Prise en charge de la Xbox, HoloLens, IoT ou Surface HubSupport for Xbox, HoloLens, IoT or Surface Hub
  • Prise en charge de natifC++Support for native C++
  • Autonomie optimiséOptimized battery life
  • Prise en charge de l’accessibilité modernes (tels que les lecteurs d’écran)Modern accessibility support (such as screen readers)
  • Fonctionnalités de données de texte enrichi (par exemple, la vérification orthographique intégrée)Rich text data capabilities (such as built-in spell check)
  • Prise en charge pour l’écriture manuscriteInking support
  • Sécuriser l’exécution via des conteneurs d’application (par exemple, le contenu est sandbox approuvée)Secure execution via application containers (for example, untrusted content is sandboxed)
  • Balisage XAML pour l’interface utilisateurXAML markup for UI
  • Expérience utilisateur riche et personnalisableRich and customizable UX
  • Grande collection de contrôles à partir de Microsoft et partenairesLarge collection of controls from Microsoft and partners
  • Interface utilisateur de haute densitéDense UI
  • Prise en charge de Windows 7Support for Windows 7
  • Plateforme prend en charge pour la validation d’entréePlatform support for input validation
  • développement rapide d’applicationsRapid application development
  • Éditeur WYSIWYG pour la création de l’interface utilisateurWYSIWYG editor for building UI
  • Grande collection de contrôles à partir de Microsoft et partenairesLarge collection of controls from Microsoft and partners
  • Interface utilisateur de haute densitéDense UI
  • Prise en charge de Windows 7Support for Windows 7
  • Entrée clavier et sourisKeyboard and mouse input
Scénarios qui ont de la prise en charge limitéeScenarios that have limited support
  • L’interface utilisateur dense (création d’une interface utilisateur dense nécessite des styles personnalisés)1Dense UI (creating a dense UI requires custom styles)1
  • Prise en charge de plusieurs fenêtres1Multiple window support1
  • Plates-formes prises en charge la validation des entrées1Platform support for input validation1
  • Windows 7 n’est pas pris en charge.Windows 7 is not supported
  • Certaines API UWP nécessitent des versions spécifiques de minimale de Windows 10Some UWP APIs require specific minimum versions of Windows 10
  • Intégration de prise en charge et le shell de plate-forme complète (par exemple, UWP actuellement ne prend en charge l’intégration barre d’état système ou un accès complet à tous les appareils)Full platform support and shell integration (for example, UWP currently doesn't support System Tray integration or full access to all devices)
  • Accès direct à tous les fichiers sur le disqueDirect access to all files on disk
  • ADO.NETADO.NET
  • Les bibliothèques de classes de base de code existantes qui utilisent non - .NET Standard ou des API conforme non - Windows App Certification KitExisting code-base class libraries that use non-.NET Standard or non-Windows App Certification Kit compliant APIs
  • Prise en charge de bouclage de réseau local (autrement dit, si votre application a besoin communiquer avec localhost sans créer une exemption de bouclage sur le périphérique cible)Local network loopback support (that is, if your app needs to communicate with localhost without creating a loopback exemption on the target device)
  • Fichier gourmandes en e/sIntensive file I/O
  • Prise en charge de haute résolution2High DPI support2
  • Entrée tactile2Touch input2
  • Prise en charge de haute résolution2High DPI support2
  • Entrée tactile2Touch input2
  • Interface utilisateur personnalisableCustomizable UI
  • Utilisateur et les graphiques de riches expériences (par exemple, tactile et animations)Rich graphics and user experiences (such as touch and animations)
  • Abstraction riche de modèles de données et de vuesRich abstraction of views and data models

1 nous avons annoncé publiquement les fonctionnalités qui répondront à ce scénario dans une prochaine version de Windows 10.1 We have publicly announced features that will address this scenario in a future release of Windows 10.

2 bien que la plateforme n’a pas de prise en charge de première classe API pour ce scénario, les développeurs peuvent prendre en charge ce scénario avec les solutions de contournement.2 Although the platform lacks first-class API support for this scenario, developers can support this scenario with workarounds.

Win32Win32

À l’aide de l’API Win32 avec C++ rend possible d’atteindre les niveaux les plus élevés de performances et l’efficacité en tirant plus de contrôle de la plateforme cible avec le code non managé que possible sur un environnement d’exécution managé tels que WinRT et .NET.Using the Win32 API with C++ makes it possible to achieve the highest levels of performance and efficiency by taking more control of the target platform with unmanaged code than is possible on a managed runtime environment like WinRT and .NET. Toutefois, un niveau de ce type de contrôle de l’exécution de votre application nécessite supérieur soins et attention à coup et la mise en productivité du développement pour les performances d’exécution de transactions.However, exercising such a level of control over your application's execution requires greater care and attention to get right, and trades development productivity for runtime performance.

Voici quelques extraits de quel l’API Win32 et C++ offre à vous permettent de créer des applications hautes performances.Here are a few highlights of what the Win32 API and C++ offers to enable you to build high-performance applications.

  • Optimisations au niveau du matériel, y compris un contrôle étroit sur l’allocation des ressources, durées de vie des objets, mise en page de données, alignement octets de livraison et bien plus encore.Hardware-level optimizations, including tight control over resource allocation, object lifetimes, data layout, alignment, byte packing, and more.
  • Il définit, tels que SSE et AVX accès à instruction axé sur les performances, par le biais des fonctions intrinsèques.Access to performance-oriented instruction sets like SSE and AVX through intrinsic functions.
  • Programmation générique efficace, de type sécurisé à l’aide de modèles.Efficient, type-safe generic programming by using templates.
  • Des algorithmes et des conteneurs efficaces et sûr.Efficient and safe containers and algorithms.
  • DirectX, notamment Direct3D et DirectCompute (Notez que UWP offre également l’interopérabilité DirectX).DirectX, in particular Direct3D and DirectCompute (note that UWP also offers DirectX interop).
  • C++AMP.C++ AMP.

Pour plus d’informations, consultez prise en main les applications de bureau Windows qui utilisent l’API Win32 et technologies de l’application de bureau.For more information, see Get started with desktop Windows apps that use the Win32 API and Desktop app technologies.

Win32 et C++ pour les applications de bureau traditionnellesWin32 and C++ for traditional desktop applications

Lors de l’écriture d’une application de bureau C++, vous pouvez choisir Win32 ou MFC pour l’interface utilisateur ou un ordinateur hôte d’infrastructures d’applications de fournisseurs tiers qui prennent également en charge les plateformes non Windows.When writing a desktop application in C++, you can choose Win32 or MFC for the UI, or a host of third-party application frameworks that also support non-Windows platforms.

  • Win32 : Il s’agit de l’API basée sur le handle, en langage C de la plateforme Windows, y compris de manière non limitative, les fonctionnalités d’interface utilisateur tels que le fenêtrage, de dessin et de l’interface utilisateur de contrôles.Win32: This is the handle-based, C-language API of the Windows platform, including but not limited to UI functionality such as windowing, drawing, and UI controls. S’agissant d’une API de bas niveau, en langage C basée sur les handles, c’est un choix peu fréquent pour la création d’applications modernes utilisant beaucoup de l’interface utilisateur.Because it is a low-level, C-language API based on handles, it's an infrequent choice for creating modern, UI-intensive apps. Toutefois, il fournit les API de base nécessaires pour interagir avec la plateforme Windows et est un choix approprié pour les applications qui ont des exigences de l’interface utilisateur simples ou qui veulent juste l’interface utilisateur de Windows pour rester disparaître autant que possible, par exemple, des jeux.However, it supplies the basic APIs necessary to interact with the Windows platform, and is a suitable choice for apps that have simple UI requirements or that just want the Windows UI to stay out of the way as much as possible for example, games.
  • MFC (bibliothèque Microsoft Foundation Class) : C’est l’infrastructure d’application vénérable et la bibliothèque d’interface utilisateur qui a servi aux développeurs Windows depuis 1992.MFC (Microsoft Foundation Class Library): This is the venerable application framework and UI library that has served Windows developers since 1992. Il s’agit une mince C++ wrapper sur l’API Win32 basée sur le handle, en langage C et fournit des interfaces et orienté objet pour un grand nombre de windows prédéfini, les contrôles communs et les autres objets de Windows.It's a thin C++ wrapper over the handle-based, C-language Win32 API and provides object-oriented interfaces for many of the predefined windows, common controls, and other Windows objects. Bien que plusieurs infrastructures d’interface utilisateur modernes dans l’écosystème .NET dépassent MFC dans plus de commodité, il est toujours l’infrastructure d’interface utilisateur native de choix pour de nombreuses C++ les développeurs qui créent des applications pour le bureau Windows.Although many modern UI frameworks in the .NET ecosystem surpass MFC in convenience, it is still the native UI framework of choice for many C++ developers creating applications for the Windows desktop.
  • Infrastructures d’application tierce : Étant donné que C++ peuvent s’exécuter sur un large éventail de plateformes et n’est pas liée à Windows ou le runtime .NET, à des tiers ont développé nouvelle application et des infrastructures d’interface utilisateur pour C++ pour faciliter le développement d’applications multiplateformes avec des interfaces utilisateur riches.Third-party application frameworks: Because C++ can run on a wide variety of platforms and isn't tied to Windows or the .NET runtime, third-parties have developed new application and UI frameworks for C++ to ease development of cross-platform applications with rich user interfaces. Certaines de ces infrastructures fournissent leurs propres aspect et la convivialité, tandis que d’autres, comme wxWidgets ou Qt utilisent ou émulent l’ensemble du contrôle natif de la plateforme.Some of these frameworks provide their own look & feel, while others such as wxWidgets or Qt use or emulate the native control set of the platform. À l’aide de ces bibliothèques, il est possible de partager presque tout code de source d’une application entre les versions de l’application qui s’exécutent sur Windows ou d’autres plateformes, tels que OSX ou Linux.Using these libraries, it's possible to share nearly all of an application's source code between versions of the application that run on Windows or other platforms, such as OSX or Linux.

Autres plateformes d’applicationsOther app platforms

Applications Web progressive (PWA)Progressive Web Apps (PWAs)

Des instances PWA permettent les développeurs réunissent son site Web de code afin de pouvoir être installé et exécuté comme une application sur les PC Windows 10.PWAs let developers package their website code so it can be installed and run like an application on Windows 10 PCs. Pour plus d’informations, consultez Progressive Web Apps.For more information, see Progressive Web Apps.

XamarinXamarin

Utilisez Xamarin pour générer des applications multiplateformes pour Windows 10 qui peut également exécuté sur iOS et Android.Use Xamarin to build cross-platform applications for Windows 10 that can also run on iOS and Android. Pour plus d’informations, consultez Xamarin.For more information, see Xamarin.