Programar aplicaciones Metro de Windows 8: estándares y WinRT

Una de las señas de identidad de la plataforma .NET de Microsoft desde su nacimiento fue la posibilidad de desarrollar aplicaciones con distintos lenguajes de programación. De esta forma se aseguraba que una gran variedad de desarrolladores pudieran dar el salto a la nueva plataforma.

Con el desarrollo de Aplicaciones Metro para Windows 8 los de Redmond han repetido la jugada. En la capa de diseño vamos a poder optar por dos tecnologías: XAML para los desarrolladores que vengan de la plataforma .NET; y HTML5/CSS3 para aquellos que lo hagan del mundo web. En lo que respecta a la lógica de la aplicación son varias las opciones: C++, VB.NET/C# y JavaScript.

Para el desarrollo de Aplicaciones Metro con los lenguajes de la web Microsoft no se ha conformado con ofrecer la posibilidad de crearlas con HTML5, CSS3 y JavaScript. Ha dispuesto que una gran cantidad de funcionalidades habituales en cualquier aplicación, como acceso a ficheros, bases de datos cliente, definición de layouts, etc., se haga utilizando estándares web bien conocidos como File API, IndexedDB, o CSS Flexible Box y CSS Grid Box. El objetivo es sencillo: que los desarrolladores web puedan reaprovechar el 100% del conocimiento que ya tienen de estos estándares al crear Aplicaciones Metro. En la práctica, Internet Explorer 10 va a ofrecer el mismo soporte a estándares que las Aplicaciones Metro, por lo que dicho conocimiento se podrá trasladar entre ambos mundos de forma transparente.

Sin embargo, aun cuando los estándares que han ido surgiendo bajo la etiqueta de HTML5 tienen a abarcar cada día más funcionalidades presentes en las aplicaciones modernas, siguen existiendo servicios que no se cubren con APIs web. Por ejemplo, si queremos acceder a sensores del dispositivo en el que está corriendo la aplicación, o acceder a servicios específicos del sistema operativo. Para este tipo de operaciones tendremos que recurrir a WinRT.

WinRT API nativa

WinRT es la API de las Aplicaciones Metro. Como se puede ver en la figura anterior será una capa común a todas las pilas de desarrollo. En la práctica es una API única que ofrece distintas proyecciones para los lenguajes de programación de Aplicaciones Metro, pero asegurando una completa equivalencia de servicios a todas ellas.

WinRT es una API nativa como Win32 y moderna como .NET en la que se ha hecho especial énfasis en el rendimiento, de ahí que cualquier llamada que pudiera requerir más de 50 milisegundos en completarse, va a tener que realizarse forzosamente de forma asíncrona. En la siguiente imagen podemos ver algunos de los paquetes más importantes.

El otro punto que asegura el rendimiento de WinRT, junto con su carácter asíncrono, es el hecho de ser una API nativa. A diferencia de .NET no va a haber ninguna máquina virtual de por medio, sino que en la sombra todo va a terminar traducido a llamadas a objetos COM.

En Genbeta Dev | Programar aplicaciones Metro de Windows 8

Javier Holguera es desarrollador en Payvision y lleva más de 5 años trabajando con tecnologías de Microsoft en una gran variedad de proyectos.

Es especialista en metodologías ágiles y en estándares web relacionado con HTML5. Es miembro activo de la comunidad .NET a través de MADNUG y colabora con medios como DotNetMania, PC Actual o Desarrolloweb.com.

Puedes seguirle en Twitter: @javierholguera o en su blog: javierholguera.com

Portada de Genbeta