/Es un hito para el desarrollo de Windows, pero ha llevado demasiado tiempo • The Register
Here it is: WinUI running as a Win32 desktop application

Es un hito para el desarrollo de Windows, pero ha llevado demasiado tiempo • The Register


Aquí está: WinUI ejecutándose como una aplicación de escritorio Win32

Aquí está: WinUI ejecutándose como una aplicación de escritorio Win32

Las manos en Microsoft ha presentado una vista previa de WinUI para aplicaciones de escritorio, lo que hace posible que los desarrolladores adopten la apariencia de UWP (Plataforma Universal de Windows) sin tener que adoptar el modelo de aplicación UWP.

WinUI es el marco GUI de Microsoft para la Plataforma universal de Windows (UWP), y la gran noticia en el reciente evento virtual Build fue el lanzamiento de WinUI Preview 1, que también es compatible con Win32, también conocido como aplicaciones de escritorio. Esto significa que los desarrolladores pueden crear una aplicación de escritorio utilizando componentes visuales que anteriormente solo funcionaban en UWP (dejando de lado una opción híbrida existente llamada islas XAML). ¿Cuál es la diferencia entre una aplicación UWP y una aplicación Win32, si ahora se ven iguales?

La respuesta es que las aplicaciones UWP y Win32 son diferentes bajo las cubiertas. Las aplicaciones para UWP están protegidas, por ejemplo, con acceso restringido al sistema de archivos de acuerdo con un complejo conjunto de reglas.

Una aplicación de escritorio, por el contrario, tiene los permisos de acceso a archivos del usuario. Una aplicación para UWP tiene un ciclo de vida de la aplicación incluido un estado suspendido que se activa si el usuario lo minimiza o cambia, mientras que una aplicación Win32 se ejecuta hasta que el usuario la cierra. Otro problema es el código que se basa en el código API de Windows utilizando identificadores de ventana (HWND), que es cómo ha funcionado el sistema operativo desde su primer lanzamiento. Este código generalmente no funciona con aplicaciones UWP, mientras que funciona con WinUI para Win32.

En otras palabras, UWP viene con una buena cantidad de equipaje que está allí por una buena razón, como seguridad o administración de energía o protección del sistema, pero que también puede interferir y romper el código heredado. El nuevo WinUI es, en efecto, Microsoft rindiéndose a la compatibilidad por encima de la modernización.

Bajo el capó

Sin embargo, ¿qué se lanzó en la vista previa? WinUI 3 Preview 1 tiene muchas limitaciones, especialmente en el lado de Win32. Una de las más grandes es una nota que dice: “El contenido de WinUI 3.0 solo puede estar en una ventana por proceso o un ApplicationView por aplicación”, no tanto Windows como Window.

Las herramientas también son limitadas. Configuramos WinUI 3 en una máquina virtual, y necesita los últimos bits de vista previa de .NET 5.0 tanto en modo de 32 bits como de 64 bits y la última vista previa de Visual Studio 2019 (Visual Studio 2019 ha sido lanzado por años, pero esta es una especie de compilación interna de una próxima actualización). Luego se agrega una extensión WinUI a Visual Studio, se inicia una nueva aplicación WinUI de 32 bits y se obtiene una página XAML “Hello world” sin caja de herramientas ni diseñador visual. La documentación es limitada, y la forma de proceder es descargar e inspeccionar un proyecto llamado Galería de controles XAML que tiene un código de ejemplo para los controles que funcionan. La rama maestra no funciona, pero hay otra llamada winui3preview que sí funciona.

Es bastante duro ¿Cuándo pueden los desarrolladores usar estas cosas de verdad? Hay un par de fechas proyectadas que vale la pena señalar. El primero es noviembre de 2020, cuando está prevista la Vista previa 4. A pesar del nombre, esto será compatible con la producción “si cumple con sus necesidades”, de acuerdo con Microsoft Presentación de llamada comunitaria en Build. La primavera de 2021 verá la Vista previa 5 y luego la disponibilidad general, con la condición adicional de que .NET 5.0 no sea una versión de soporte a largo plazo. Para eso, espere hasta noviembre de 2021 y .NET 6.0. La mejor noticia es que la compatibilidad con versiones anteriores de Windows no es tan mala; Microsoft está hablando de llegar a Windows 8.1 a través de un código de compatibilidad llamado polyfills.

La hoja de ruta de WinUI 3. Se requiere paciencia.

La hoja de ruta de WinUI 3. Se requiere paciencia.

Sin embargo, WinUI 3 es una versión histórica para desarrolladores de Windows. No es solo el desacoplamiento de la API GUI de UWP, sino también la adición de características necesarias como la validación de entrada, lo que significa que está madurando y se adapta mejor a las aplicaciones comerciales que antes. En teoría, podría aportar más coherencia al ecosistema de Windows 10, actualmente una mezcla de estilos de diseño que incluyen WPF (Windows Presentation Foundation, basado en DirectX), GDI + Windows 7 de estilo antiguo, UWP en varias formas y aplicaciones que lo hacen ellos mismos usan bibliotecas multiplataforma, aunque en la práctica muchos permanecerán igual mientras continúen trabajando.

También está la cuestión de los méritos de Microsoft Sistema de diseño fluido, que es el aspecto que WinUI permite. en un publicación reciente, El director de diseño de productos de Microsoft, Benedikt Lehnert, describió los objetivos de la compañía para el diseño fluido, que incluye plataformas cruzadas y Windows. “Puede ser frustrante cuando las cosas funcionan de manera diferente sin razón (o alguna razón inexplicable)”, observó; pero, ¿cómo se obtiene una interfaz de usuario que funcione “igual” cuando existe una contradicción inherente entre la coherencia multiplataforma y ofrecer una experiencia nativa para diferentes sistemas operativos?

Al leer el artículo de Lehnert, es evidente que Microsoft se centra más en lograr que los productos de Microsoft 365 funcionen de manera consistente en Windows, macOS, iOS, Android y Web, que en solucionar problemas de diseño en Windows. Los desarrolladores de terceros también tienen este problema, por lo que Microsoft se enfrenta a constantes solicitudes para hacer que WinUI sea multiplataforma, algo que en Build el equipo dijo que estaba considerando.

En este contexto, vale la pena mencionar el Plataforma Uno, un proyecto de terceros que tiene una medida de bendición oficial de Microsoft en el sentido de que se menciona con frecuencia. El CTO de Uno, Jerome Laban, apareció en la llamada de la comunidad WinUI mencionada anteriormente, donde describió cómo este proyecto de código abierto permite que WinUI 3.0 se ejecute en iOS, Android, Web, a través de WebAssembly (Wasm) y macOS, con planes de agregar soporte para Linux. Como ejemplo, Uno ofrece algo muy parecido a la calculadora de Windows 10 para macOS e iOS. Under the covers Uno usa la tecnología Xamarin, pero con WinUI XAML en lugar del sabor único e incompatible de XAML utilizado por Xamarin Forms. Uno tiene limitaciones, y actualmente algunos problemas con Wasm incluyen un gran tamaño de descarga. Aún así, no puede evitar preguntarse si el enfoque de Uno tiene más sentido que el MAUI (interfaz de usuario de aplicaciones multiplataforma) presentado en Build – y sin olvidar React Native, que usará WinUI en Windows y habilita el código JavaScript compartido en todas las plataformas, que ahora incluye macOS.

Microsoft dice que ha enviado o instalado Windows 10 en más de mil millones de dispositivos, lo que sugiere que sigue siendo un objetivo importante para los desarrolladores. Sin embargo, su atractivo se ha visto dañado por demasiados cambios de dirección, la imposibilidad de establecer Microsoft Store como la ruta principal para el descubrimiento y la instalación de aplicaciones, y la necesidad de multiplataforma para muchos tipos de aplicaciones. WinUI y el Project Reunion asociado parecen prometedores como un medio para modernizar las aplicaciones sin obligar a los desarrolladores a adoptar UWP, pero no estarán completamente listos hasta, quizás, 2021, nueve años después el lanzamiento de Windows 8. Ha tomado demasiado tiempo. ®

Patrocinado:
Webcast: el ransomware se ha vuelto nuclear



Source link