Elección de la plataforma de aplicacionesChoose your app platform

Cuando quieres crear una nueva aplicación de escritorio para equipos Windows, la primera decisión que debes tomar es la plataforma de aplicaciones que vas a usar.When you want to create a new desktop application for Windows PCs, the first decision you make is which application platform to use. Windows ofrece cuatro plataformas de aplicaciones principales, cada una de ellas con ventajas diferentes:Windows provides four main application platforms, each with different strengths:

Todas estas plataformas de aplicaciones te permiten crear aplicaciones de escritorio como Word, Excel y Photoshop, que se ejecutan en el escritorio clásico de Windows y aprovechan al máximo las características específicas de ese entorno.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. Sin embargo, algunas de estas plataformas disponen de características especiales que resultan más adecuadas para determinados tipos de aplicaciones:However, some of these platforms share some traits and are better suited for certain types of applications:

  • UWP, WPF y Windows Forms.UWP, WPF, and Windows Forms. Estas plataformas proporcionan entornos de ejecución administrados (Windows Runtime para UWP, y .NET para Windows Forms y WPF) que aportan muchas ventajas, especialmente en las áreas de productividad del desarrollador, una interfaz de usuario sofisticada y personalizable, y la seguridad de las aplicaciones.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. Como estas plataformas admiten diseñadores visuales y el marcado de la interfaz de usuario para crear rápidamente dicha interfaz, resultan especialmente adecuadas para las aplicaciones de línea de negocio.Because these frameworks support visual designers and UI markup for rapidly creating UI, they are particularly well-suited for line-of-business applications.

  • Win32 API.Win32 API. Win32 API (también conocida como la API de Windows) es la plataforma original para aplicaciones Windows en C y C++ nativas que requieren acceso directo a Windows y al hardware.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. Proporciona una experiencia de desarrollo de primera clase sin depender de un entorno de ejecución administrado como .NET y WinRT.It provides a first-class development experience without depending on a managed runtime environment like .NET and WinRT. Esto hace que Win32 API sea la plataforma preferida para las aplicaciones que necesitan el mayor nivel de rendimiento y acceso directo al hardware del sistema.This makes the Win32 API the platform of choice for applications that need the highest level of performance and direct access to system hardware.

En este artículo se describen con más detalle estas plataformas, y esa información te ayudará a determinar cuál es la mejor para tu aplicación.This article describes these platforms in more detail and helps you determine the best one for your application.

Nota

Con independencia de la plataforma de aplicaciones que elijas, puedes usar muchas de las características de la Plataforma universal de Windows (UWP) para ofrecer una experiencia moderna en tu aplicación en 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. Por ejemplo, aunque la aplicación de escritorio se haya compilado con WPF, Windows Forms o Win32 API, podrás usar muchas de las características que se introdujeron por primera vez con UWP, por ejemplo, la implementación de paquetes MSIX y los controles XAML de UWP.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. Para más información, consulta Modernización de las aplicaciones de escritorio.For more information, see Modernize your desktop apps.

UWPUWP

UWP es la plataforma más vanguardista para juegos y aplicaciones de Windows 10.UWP is the leading-edge platform for Windows 10 applications and games. Se trata de una plataforma muy personalizable que usa el marcado XAML para separar la interfaz de usuario (presentación) del código (lógica de negocios).It's a highly customizable platform that uses XAML markup to separate UI (presentation) from code (business logic). UWP es adecuada para aplicaciones de escritorio que requieren una interfaz de usuario sofisticada, personalización de estilos y escenarios de uso intensivo de gráficos.UWP is suitable for desktop applications that require a sophisticated UI, styles customization, and graphics-intensive scenarios. UWP también dispone de compatibilidad integrada con el sistema Fluent Design para la experiencia predeterminada de usuario y proporciona acceso a las API de Windows Runtime (WinRT).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. Gracias a la adopción de Fluent Design, UWP admite automáticamente los métodos de entrada habituales: entrada manuscrita, escritura táctil, controlador para juegos, teclado y mouse.By adopting Fluent, UWP automatically supports common input methods such as ink, touch, gamepad, keyboard, and mouse.

No solo puedes usar UWP para crear aplicaciones de escritorio para equipos Windows, sino que también es la única plataforma compatible con las aplicaciones de Xbox, HoloLens y 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 es nuestra plataforma de aplicaciones más reciente y vanguardista.UWP is our newest, leading-edge application platform.

Para obtener más información sobre UWP, consulta los artículos siguientes:For more information about UWP, see the following articles:

WPFWPF

WPF es la plataforma establecida para las aplicaciones Windows administradas con acceso a .NET Core y a la instancia completa de .NET Framework, y también usa el marcado XAML para separar la interfaz de usuario del código.WPF is the established platform for managed Windows applications with access to .NET Core or the full .NET Framework, and it also uses XAML markup to separate UI from code. Esta plataforma está diseñada para aplicaciones de escritorio que requieren una interfaz de usuario sofisticada, personalización de estilos y escenarios de uso intensivo de gráficos.This platform is designed for desktop applications that require a sophisticated UI, styles customization, and graphics-intensive scenarios. Las aptitudes de desarrollo en WPF son similares a las de UWP, por lo que migrar aplicaciones de WPF a UWP es más fácil que migrar desde 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.

Para obtener más información sobre WPF, consulta los artículos siguientes:For more information about WPF, see the following articles:

Windows FormsWindows Forms

Windows Forms es la plataforma original para aplicaciones Windows administradas, con un modelo de interfaz de usuario ligero y acceso a .NET Core y a la instancia completa de .NET Framework.Windows Forms is the original platform for managed Windows applications with a lightweight UI model and access to .NET Core or the full .NET Framework. Esta plataforma es más adecuada para que los desarrolladores puedan empezar a compilar aplicaciones rápidamente, incluso para aquellos que no están familiarizados con ella.It excels at enabling developers to quickly get started building applications, even for developers new to the platform. Se trata de una plataforma de desarrollo de aplicaciones rápida, basada en formularios, con una gran colección integrada de controles visuales y de arrastrar y colocar que no son visuales.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 no usa XAML, por lo que si decides más adelante llevar tu aplicación a UWP, tendrás que reescribir completamente la interfaz de usuario.Windows Forms does not use XAML, so deciding later to extend your application to UWP entails a complete re-write of your UI.

Para obtener más información sobre Windows Forms, consulta los siguientes artículos:For more information about Windows Forms, see the following articles:

Win32Win32

El uso de Win32 API con C++ permite lograr los niveles más altos de rendimiento y eficiencia y tomar un mayor control de la plataforma de destino con código no administrado de lo que es posible en un entorno de ejecución administrado como WinRT y .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. Sin embargo, ejercer este nivel de control sobre la ejecución de la aplicación requiere un mayor cuidado y atención para hacerlo bien, y sacrifica productividad durante el desarrollo a cambio de rendimiento en tiempo de ejecución.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.

Estos son algunos aspectos destacados de lo que ofrece Win32 API y C++ que te permitirán crear aplicaciones de alto rendimiento.Here are a few highlights of what the Win32 API and C++ offers to enable you to build high-performance applications.

  • Optimizaciones de nivel de hardware, como un estrecho control sobre la asignación de recursos, la duración de los objetos, el diseño de los datos, la alineación, el empaquetado de bytes, etc.Hardware-level optimizations, including tight control over resource allocation, object lifetimes, data layout, alignment, byte packing, and more.
  • Acceso a conjuntos de instrucciones orientadas al rendimiento como SSE y AVX a través de funciones intrínsecas.Access to performance-oriented instruction sets like SSE and AVX through intrinsic functions.
  • Programación genérica eficaz y con seguridad de tipos mediante el uso de plantillas.Efficient, type-safe generic programming by using templates.
  • Contenedores y algoritmos eficaces y seguros.Efficient and safe containers and algorithms.
  • DirectX, concretamente Direct3D y DirectCompute (ten en cuenta que UWP también ofrece interoperabilidad de DirectX).DirectX, in particular Direct3D and DirectCompute (note that UWP also offers DirectX interop).

Para obtener más información, consulta los artículos siguientes:For more information, see the following articles:

Comparación de las plataformas: UWP, WPF y Windows FormsPlatform comparison: UWP, WPF, and Windows Forms

En la tabla siguiente se comparan las distintas características de Windows Forms, WPF y UWP en detalle.The following table compares various characteristics of Windows Forms, WPF, and UWP in detail.

Característica o escenarioFeature or scenario UWPUWP WPFWPF Windows FormsWindows Forms
Versiones admitidasSupported versions Windows 10Windows 10 Windows 7 y versiones posterioresWindows 7 and later Windows 7 y versiones posterioresWindows 7 and later
LenguajesLanguages C#, C++/WinRT, C++/CX, VB, JavaScriptC#, C++/WinRT, C++/CX, VB, JavaScript C#, C++/CLI (Extensiones administradas para C++), F#, VBC#, C++/CLI (Managed Extensions for C++), F#, VB C#, C++/CLI (Extensiones administradas para C++), F#, VBC#, C++/CLI (Managed Extensions for C++), F#, VB
Entorno de ejecución de la interfaz de usuarioUI runtime Nativo (C++/WinRT y C++/CX) y administrado (.NET Native)Native (C++/WinRT and C++/CX) and managed (.NET Native) Administrado (.NET Framework y .NET Core 3)Managed (.NET Framework and .NET Core 3) Administrado (.NET Framework y .NET Core 3)Managed (.NET Framework and .NET Core 3)
Código abiertoOpen source Sí (solo para la biblioteca de la interfaz de usuario de Windows)Yes (Windows UI Library only) Sí (solo para .NET Core)Yes (.NET Core only) Sí (solo para .NET Core)Yes (.NET Core only)
Admite XAMLSupports XAML Yes Yes NoNo
VentajasStrengths
  • Marcado XAML para la interfaz de usuarioXAML markup for UI
  • Experiencia de usuario enriquecida y personalizableRich and customizable UX
  • Las bases de código existentes son compatibles con .NET StandardYour existing code bases are .NET Standard compliant
  • Compatibilidad con valores altos de PPPHigh DPI support
  • Compatibilidad con varios tipos de entrada en dispositivos Windows (entrada táctil, lápiz, mando para juegos, mouse y teclado)Support for multiple input types across Windows devices (including touch, pen, gamepad, mouse, and keyboard)
  • Compatibilidad con Xbox, HoloLens, IoT o Surface HubSupport for Xbox, HoloLens, IoT or Surface Hub
  • Interfaz de usuario densa (compacta) opcionalOptional dense (compact) UI
  • Compatibilidad con C++ nativoSupport for native C++
  • Optimización de la duración de la bateríaOptimized battery life
  • Compatibilidad con dispositivos modernos de accesibilidad (como lectores de pantalla)Modern accessibility support (such as screen readers)
  • Funcionalidades de datos de texto enriquecido (como la revisión ortográfica integrada)Rich text data capabilities (such as built-in spell check)
  • Compatibilidad con entrada manuscritaInking support
  • Ejecución segura mediante contenedores de aplicaciones (por ejemplo, el contenido que no es de confianza está en un espacio aislado)Secure execution via application containers (for example, untrusted content is sandboxed)
  • Marcado XAML para la interfaz de usuarioXAML markup for UI
  • Experiencia de usuario enriquecida y personalizableRich and customizable UX
  • Gran colección de controles de Microsoft y asociadosLarge collection of controls from Microsoft and partners
  • Interfaz de usuario densaDense UI
  • Compatibilidad con Windows 7Support for Windows 7
  • Compatibilidad de la plataforma con la validación de entradaPlatform support for input validation
  • Desarrollo rápido de aplicacionesRapid application development
  • Editor WYSIWYG para compilar la interfaz de usuarioWYSIWYG editor for building UI
  • Gran colección de controles de Microsoft y asociadosLarge collection of controls from Microsoft and partners
  • Interfaz de usuario densaDense UI
  • Compatibilidad con Windows 7Support for Windows 7
  • Entrada mediante teclado y mouseKeyboard and mouse input
Escenarios con compatibilidad limitadaScenarios that have limited support
  • Compatibilidad con varias ventanas1Multiple window support1
  • Compatibilidad de la plataforma con la validación de los datos de entrada1Platform support for input validation1
  • No se admite Windows 7Windows 7 is not supported
  • Algunas API de UWP requieren versiones mínimas específicas de Windows 10Some UWP APIs require specific minimum versions of Windows 10
  • Compatibilidad completa con la plataforma e integración con el shell (por ejemplo, UWP no admite actualmente la integración de la bandeja del sistema ni el acceso completo a todos los dispositivos)Full platform support and shell integration (for example, UWP currently doesn't support System Tray integration or full access to all devices)
  • Acceso directo a todos los archivos del discoDirect access to all files on disk
  • ADO.NETADO.NET
  • Bibliotecas de clases de bases de código existentes que usan las API compatibles con el kit para la certificación de aplicaciones que no son de .NET Standard ni de WindowsExisting code-base class libraries that use non-.NET Standard or non-Windows App Certification Kit compliant APIs
  • Compatibilidad con bucle invertido de red local (es decir, si la aplicación necesita comunicarse con localhost sin crear una exención de bucle invertido en el dispositivo de destino)Local network loopback support (that is, if your app needs to communicate with localhost without creating a loopback exemption on the target device)
  • E/S de archivos de uso intensivoIntensive file I/O
  • Compatibilidad con valores altos de PPP2High DPI support2
  • Entrada táctil2Touch input2
  • Compatibilidad con valores altos de PPP2High DPI support2
  • Entrada táctil2Touch input2
  • Interfaz de usuario personalizableCustomizable UI
  • Gráficos y experiencias de usuario enriquecidas (como la entrada táctil y las animaciones)Rich graphics and user experiences (such as touch and animations)
  • Abstracción enriquecida de vistas y modelos de datosRich abstraction of views and data models

1 Hemos anunciado públicamente características que abordarán este escenario en una versión futura de Windows 10.1 We have publicly announced features that will address this scenario in a future release of Windows 10.

2 Aunque la plataforma no es compatible con la API de primera clase de este escenario, los desarrolladores pueden sortear este inconveniente mediante soluciones alternativas.2 Although the platform lacks first-class API support for this scenario, developers can support this scenario with workarounds.

Otras plataformas de aplicacionesOther app platforms

Aplicaciones web progresivas (PWA)Progressive Web Apps (PWAs)

Estas aplicaciones permiten a los desarrolladores empaquetar su código de sitio web para poderlo instalar y ejecutar como una aplicación en equipos con Windows 10.PWAs let developers package their website code so it can be installed and run like an application on Windows 10 PCs. Para más información, consulta Aplicaciones web progresivas.For more information, see Progressive Web Apps.

XamarinXamarin

Usa Xamarin para crear aplicaciones multiplataforma para Windows 10 que también se puedan ejecutar en iOS y Android.Use Xamarin to build cross-platform applications for Windows 10 that can also run on iOS and Android. Para más información, consulta Xamarin.For more information, see Xamarin.