Windows Runtime y el despliegue de aplicaciones

Llevo utilizando la versión preview de Windows 8 desde su presentación en septiembre y durante este tiempo he podido introducirme en el nuevo mundo que se nos ha presentado con el desarrollo de aplicaciones Metro Style y Windows Runtime, el nuevo proveedor de servicios del sistema. Hace también unas semanas que estoy deseando escribir sobre mis experiencias y por fin me he decidido, así que en los próximos días iré compartiendo con todos vosotros una serie de entradas sobre el funcionamiento de Windows Runtime y sobre cómo desarrollar aplicaciones para la plataforma.

Para esta primera entrada he elegido un tema que se trató en unas de las charlas de la BUILD y que me resultó muy interesante porque a diferencia de otras charlas, en las que se mostraba cómo crear aplicaciones y en las que siempre veíamos WinRT como la API que podemos consumir desde cualquier lenguaje (Javascript, C++, C# y VB), Matt Merry (Program Manager del equipo de Windows Runtime Experience), en su charla, cambió el punto de vista y muestra cómo las aplicaciones trabajan con la infraestructura de Windows Runtime para ejecutarse. Sin duda, lo más interesante de esa presentación (que recomiendo que veáis) es la sesión de debug paso a paso que hace para ver cómo funciona el proceso de activación de una aplicación, pero eso lo dejaremos para más adelante, antes veamos qué es lo que sucede en el sistema cuando desplegamos nuestra aplicación.

Con Windows 8 tenemos un nuevo sistema de despliegue de paquetes mediante el cual podemos instalar o desinstalar aplicaciones de una forma simple, sin hacer cambios irreversibles en el sistema operativo y sin que haya una degradación del rendimiento del sistema. No vamos a entrar ahora en detalle sobre lo que contiene este paquete, pero basta decir de momento que es un contenedor que se utiliza para instalar nuestra aplicación en nuestra máquina local, en una para hacer pruebas o en el Windows Store.
Sabiendo esto, tenemos por un lado el paquete que contiene nuestra aplicación y por otro lado tenemos el manifiesto del paquete (package manifest) que describe y contiene las propiedades para desplegar el paquete. Este fichero contiene información tan importante como el nombre de la aplicación a mostrar, el icono, las capacidades (características del sistema o dispositivos que la aplicación puede utilizar) o la página de inicio. Todos las aplicaciones Metro tienen este manifiesto, se trata de un fichero XML con el nombre Package.appxmanifest que podemos encontrar en el directorio raíz de nuestro proyecto. Además Visual Studio 11 tiene un diseñador que nos permite ver todas las propiedades agrupadas en varias pestañas (Application UI, Capabilities, Declaration, Content URIs y Packaging).

Continuar leyendo

BcnDevCon: Aplicaciones robustas con Programación Orientada a Aspectos

Este pasado jueves di una breve charla durante la Barcelona Developers Conference sobre Programación Orientada a Aspectos. Fue una charla introductoria de cuarenta y cinco minutos en la que vimos los conceptos básicos de AOP, los problemas de implementación que nos encontramos al tratar los temas transversales de aplicación (cross-cutting concerns), las soluciones parciales que utilizamos actualmente y los beneficios que nos aporta la programación orientada a aspectos. Las demos con código estuvieron centradas en presentar varios conceptos de PostSharp y DynamicProxy, dos librerías que podemos utilizar para implementar aspectos en nuestras aplicaciones. En esta entrada voy a intentar resumir lo que ya fue una charla muy resumida de lo que es AOP.

¿Qué es AOP?
La programación orientada a aspectos es un paradigma de programación cuya principal intención es que escribamos buen código, código más limpio. Como comenté durante la charla este es un tema bastante curioso, porque el concepto de AOP es bastante antiguo (se desarrolló hace 15 años), mucha gente lo conoce, existen librerías desde hace también bastante tiempo, pero lo curioso es que en muy pocos proyectos he visto una implementación de aspectos.

De hecho, me ha sucedido varias veces, que lo primero que pregunta mucha gente cuando oye este término (sobre todo programadores de .NET) es: ¿Ya no programamos con orientación a objetos? Y la respuesta siempre es: No, AOP no sustituye la orientación a objetos. Pero lo que sucede es que la OOP es un modelo que se queda corto cuando tenemos que implementar temas transversales, cuando tenemos que implementar comportamientos que se utilizan en gran parte de las funcionalidades de negocio y además estos comportamientos no se pueden aislar fácilmente.

Continuar leyendo

Utilizando Prism en Windows Phone 7.1 Mango (II): Notificaciones

En el primer post dedicado a Prism para Windows Phone 7 vimos las clases que nos permitían ejecutar comandos desde la barra de aplicación. En esta segunda entrada veremos las clases del espacio de nombres Microsoft.Practices.Prism.Interactivity.InteractionRequest que nos van a permitir mostrar diferentes notificaciones en la interfaz de usuario.

De entre todas las notificaciones que necesitamos mostrar al usuario podemos distinguir dos tipos: las informativas y las de error. La principal diferencia entre los dos tipos es que que las notificaciones informativas no deben interrumpir la tarea que el usuario está realizando mientras que las de error sí lo deben hacer, es decir, que el usuario no debería poder seguir trabajando cuando se muestre este tipo de notificación. Además, a partir de un mensaje informativo el usuario no debe realizar ninguna acción concreta, sin embargo a partir de un mensaje de error, el usuario tendrá que realizar una serie de acciones para evitar la situación de error. Normalmente utilizaremos las notificaciones informativas para informar que una determinada acción se ha completado.

Para mostrar cómo utilizar las notificaciones he añadido dos botones en la vista principal de la solución de ejemplo que utilicé en la anterior entrada. Al pulsar cada uno de estos dos botones se muestran los dos tipos de notificaciones. Es obvio que este no es el escenario real que nos encontraremos en la mayoría de los casos, pero como fines demostratitos nos sirve.

Continuar leyendo

Evento UOC DotNetClub: 13 Katas de Windows Phone 7

El próximo martes 18 de octubre comenzamos la nueva temporada de webcasts del DotNetClub de la UOC. Para este primer evento gratuito hemos escogido un tema del que teníamos muchas ganas de charlar. Además como hace muy pocos días que ha aparecido la actualización Mango, creo que es un momento ideal para conocer todas sus novedades.

Para asistir al webcast solamente debéis registraros en la web de eventos de Microsoft mediante el siguiente link. El webcast dará comienzo a las 19:30h (GMT+2) y tendrá una duración aproximada de una hora y media. Al final de la sesión habrá un turno de preguntas para que podáis resolver todas las dudas.

En 2010 Microsoft irrumpe en el mercado generalista móvil con un novedoso sistema operativo: Windows Phone 7. Con la intención de robar mercado a Android y iPhone, se pone a disposición de los programadores las herramientas necesarias para empezar a llenar el market de aplicaciones. Pero, ¿cómo puedo hacer mi aplicación? ¿Cuáles son los límites de mi teléfono a día de hoy?

A lo largo de este Webcast intentaremos dar respuesta a estas preguntas: estudiaremos de forma general como hacer las pantallas, de qué herramientas disponemos, qué técnicas usar y cómo acceder a las funciones especiales que nos aporta un móvil.

Toda la información necesaria para que los límites los pongas tú y así poder llegar a ser un «Desarrollador Ninja de Windows Phone 7».

Y no olvidemos a nuestro ponente, para este primer evento de la temporada contaremos con Fernando Escolar, consultor senior .NET y MCPD en aplicaciones Windows y Web.

Actualización: Gracias a la colaboración de CampusMVP y su línea editorial Krasis Press, sortearemos entre todos los asistentes al webcast dos ejemplares del libro «Windows Phone 7.5 ‘Mango’ – Desarrollo Silverlight» de Josué Yeray Julián. Un motivo más para no perderte este evento.

Webcast MSDN: 13 katas de Windows Phone 7
Público: Programador/desarrollador de programas y Universitario.
Inicio: martes, 18 de octubre de 2011 19:30
Zona horaria: (GMT+02:00) Madrid, París
Duración: 1 horas 30 minutos

Información y registro:
Microsoft World Wide Events > Detalles del evento Webcast en directo

Deja el primer comentario

Utilizando Prism en Windows Phone 7.1 Mango (I)

Prism es un conjunto de librerías que nos facilitan el desarrollo de aplicaciones WPF y Silverlight de una forma modular, permitiéndonos dividir la funcionalidad de una aplicación compleja en módulos más simples. Uno de los beneficios de utilizar Prism es que estos módulos pueden ser implementados y mantenidos de manera independiente y puede haber una comunicación poco acoplada entre ellos. Esta vendría a ser una definición bastante sencilla y simple de lo que es y nos permite hacer Prism.

Hace aproximadamente un año se incorporaron a Prism una serie de librerías para ayudar a desarrollar aplicaciones para Windows Phone 7. Para los que conozcáis Prism, puede que en un primer momento sorprenda que se aplique el modelo de desarrollo a la plataforma móvil, porque lo cierto es que Prism surgió para el desarrollo de aplicaciones compuestas (de una Shell y módulos) y este escenario raramente lo vamos a encontrar en las aplicaciones Windows Phone 7, así que… ¿para qué podemos utilizar Prism en Windows Phone 7? Pues para aprovecharnos de una serie de clases que nos permiten desarrollar con el el patrón MVVM e implementar comandos, navegación, notificaciones de objetos observables, interacción con notificaciones y con la barra de la aplicación. Y es por esto último por lo que vamos comenzar. En este primer artículo, que nos servirá de introducción, vamos a ver tres clases que tenemos disponibles para agregar comportamientos a los botones de la barra de la aplicación.

Para comenzar a utilizar Prism tenemos que descargar la última release de http://compositewpf.codeplex.com/, pero aquí ya tengo que hacer el primer inciso, ya que a día de hoy esta release no funciona con la última versión de Windows Phone 7. Sin embargo, hay una actualización de las librerías con soporte para Mango que podemos descargar en http://wp7guide.codeplex.com. Es de esperar, según el equipo de Prism que en un mes aproximadamente se publiquen las librerías firmadas con soporte para Mango. Los ejemplos de código que mostraré y el código que se puede descargar en este artículo funcionan exclusivamente para la versión 7.1, así que será necesario descargar y compilar esta solución.

Continuar leyendo