Uno de las principales cosas que se echan en falta a la hora de desarrollar nuestras aplicaciones para Windows Phone 7, es la falta de una base de datos integrada que nos permita almacenar nuestra información de forma local sin necesidad de depender constantemente del acceso a Internet del teléfono.
Probablemente en algún momento saquen algún motor integrado en la plataforma, mientras tanto están disponibles los siguientes proyectos que os pueden ayudar.
Sterling: es una base de datos con soporte LINQ to Objects que sirve tanto para tus aplicaciones en Silverlight de navegador como las de Windows Phone 7. Entre las ventajas que anuncian son su flexibilidad, su portabilidad, su poco peso y su forma no intrusiva de almacenamiento de la información. Aún se encuentra en beta, por lo que “Use at your own risk” como ellos mismos señalan. Si quieres empezar con Windows Phone 7 te puede ser útil esta guía de incio
Windows Phone 7 DataBase: otro proyecto de Codeplex que ofrece soporte de tablas con un número cualquiera de columna. Incluye soporte para el cifrado de la información con clave y lazy loading. Su desarrollo parece un poco menos activo que el de Sterling.
SQLite para Windows Phone 7: este proyecto de Dan Ardelean se trata de una migración de csharp-sqlite para que funcione sobre Isolated Storage. En el enlace podéis encontrar la aplicación de prueba que desarrolló y el código que os puede resultar útil si queréis hacer uso de ella.
Esperemos que no tarden mucho en incluir dentro de la plataforma algo mejor que trabajar con el IsolatedStorage directamente y nos quitemos la necesidad de usar librerías externas.
Una de las características que los desarrolladores más echan en falta del Marketplace de Windows Phone 7 es la de disponer de algún tipo de estadísticas sobre qué está pasando con tu aplicación. Datos como el número de instalaciones, las veces que se ejecuta tu aplicación y similares son necesarios para saber si estás haciendo bien el trabajo o no.
Conocida esta carencia en la primera versión del Marketplace lanzada junto con el teléfono, Microsoft se ha asociado con PreEmptive Solutions para cubrir esta necesidad básica mientras, supongo, desarrollen su propio sistema integrado directamente en tu cuenta del AppHub. Gracias a este acuerdo es posible obtener el Runtime Intelligence for Windows Phone de forma gratuita para usar en nuestras aplicaciones hasta finales de Marzo del año que viene con el cuál podremos conocer la siguiente información:
Número de ejecuciones de la aplicación
Número de usuarios únicos
Tiempo de uso de tus aplicaciones
Estadísticas generales sobre el sistema y el comportamiento de tu aplicación.
Para descargárselo, simplemente hay que registrarse en la dirección web de la compañía y recibirás toda la información necesaria en tu correo electrónico. Para comenzar a usarlo, te recomiendo el siguiente Quickstart en vídeo:
Como extra, también podrás utilizar las capacidades de Dotfuscator para proteger el código de tus aplicaciones como comentaré en otra entrada.
Este fin de semana se celebró en Madrid la primera Coding Camp a lo grande donde unas 150 personas de toda España se han reunido para dar rienda suelta a su creatividad durante 48 horas para crear juegos y aplicaciones para Windows Phone 7.
Una de las pruebas más fehaciente de lo fácil que es desarrollar para esta plataforma es que para la mayor parte de los asistentes, esta era su primera vez que se encontraban con XNA. Sin embargo, 48 horas después, eran capaces de tener un juego ejecutándose en un dispositivo, con una cierta lógica que lo hacía jugable e incluso algunos convirtiéndose en productos casi terminados para subirlos al Marketplace de Windows Phone 7.
También se comprobó que lo mejor es aliarse con un diseñador para dotar a tu juego de un nivel diferenciador del resto. Los 30 diseñadores supieron cubrir las necesidades de los 120 desarolladores realizando las imágenes y texturas necesarias para sus juegos.
Ahora solo falta esperar a que comercialicen los juegos y que tenga un teléfono para jugar con ellos. Si tú estás interesado en empezar a desarrollar para Windows Phone 7 échale un ojo a estos recursos.
En las herramientas de desarrollo para Windows Phone 7 viene una serie de controles oficiales que pueden ser utilizados libremente en las aplicaciones que desarrollemos. Generalmente con los controles por defecto tenemos cubierta nuestras necesidades a la hora de crear nuestra aplicación; sin embargo, hay situaciones en las que es necesario un control que no viene incluido por defecto.
Antes esta situación tenemos dos opciones posibles: desarrollar nuestro propio control que satisfaga las necesidades que tenemos en nuestra aplicación o buscar si alguien ha desarrollado un control parecido para evitar reinventar la rueda. Si optas por la segunda opción pueden resultar interesante las dos opciones siguientes:
Silverlight for Windows Phone Toolkit: del proyecto del equipos de Silverlight en Microsoft podemos obtener una serie de componentes liberados por ellos con el código fuente que no vienen incluidos por defecto en las herramientas oficiales. Alguno de los controles que nos podemos encontrar son: DataPicker, ListPicker, TimePicker, WrapPanel, AutoCompleteBox, etc. Tienes el listado completo en la página de descarga de Codeplex
Windows Phone Controls from Telerik: esta compañía tiene en el mercado un gran número de controles para diferentes tecnologías que llevan tiempo facilitando el trabajo a los desarrolladores. Algunos de ellos disponibles de forma gratuita y otros de pago. En la actualidad están preparando su paquete de controles para Windows Phone 7 y es posible obtener la versión CTP de forma gratuita. Algunos de los controles disponibles son el DockPanel, UniformGrid, InfiniteListBox, etc.
Durante la última edición de TecheEd Europe, estuvieron repartiendo códigos para obtener la versión final de forma gratuita una vez que la comercialicen. Si alguien está interesado en el toolkit de Telerik tengo disponibles cuatro códigos para canjear por la versión final. Los cuatro primeros que dejen su comentario se lo llevan
Si quieres empezar a desarrollar para Windows Phone 7 y no sabes muy bien por dónde hacerlo, además del libro de la entrada anterior dispones de los siguientes recursos para ayudarte:
Una de las ventajas a la hora de desarrollar para Windows Phone 7 es que puedes reciclar el conocimiento anterior que tengas de Silverlight para el desarrollo de aplicaciones, y de XNA para el de videojuegos. Sin embargo, una vez que comienzas con ello te encuentras una serie de limitaciones propias de la plataforma que hacen que el proceso no sea igual que el desarrollo para escritorio o web.
Para solucionar esas dudas, hasta ahora los recursos que se podían emplear era la documentación de MSDN, vídeos de Channel 9 o entradas de blogs que fuéramos encontrando por internet. Una forma de encontrar la información bastante dispersa que no facilitaba a las personas que querían empezar con la plataforma. Sin embargo, tras el PDC esto ha cambiado.
Charles Petzold ha hecho público y de forma gratuita, su libro Programming Windows Phone 7 con más de 1.000 páginas de contenido para que sirva como guía y referencia a todos los desarrolladores noveles en la plataforma. Un buen detalle por parte de Microsoft de cederlo de forma gratuita para su descarga con código incluido.
Por otra parte, si eres desarrollador o diseñador, tienes oportunidad de conocer mejor la plataforma y desarrollar tus aplicaciones para Windows Phone 7 en el campamento de fin de semana que se está organizando en Madrid los días 26-28 de Noviembre. Disfruta y comparte un fin de semana con desarrolladores de toda España y gana un dinero extra publicando tus aplicaciones en el Marketplace de Windows Phone 7.
Este fin de semana pasado se celebró en Madrid una Mini Codecamp de desarrollo de juegos en XNA para Windows Phone 7. Unas veinte personas de toda España reunidas en un hotel para pasárselo bien y conseguir sacar adelante un juego aceptable para la plataforma.
El resultado, mucho mejor de lo esperado. En un principio, cada uno de nosotros llevaba una idea ya planteada para desarrollar, yo había pensado en portar un juego como el Abduction para Android pero con otra idea más curiosa surgida de un fin de semana junto con los amigos en una casa rural. El nombre era “Penis Adventures”, así que ahí queda a la imaginación de cada uno pensar el argumento del mismo.
Sin embargo, la idea que traía ya Carles preparada de un juego basado en el clásico Simon resultó ser algo más sencillo y entretenido de hacer; sobre todo por hacerlo de forma conjunta con alguien.
El resultado fue el que veis, un gran trabajo de programación, sobre todo de Carles, partiendo de que no sabíamos nada de XNA antes de empezar este evento. La aplicación está subida al Marketplace y pendiente de pasar los tests para ver si la aceptan o la rechazan. En un futuro, probablemente la mejores con ideas que se quedaron en el tintero para esta versión.
El MVVM es un patrón de arquitectura que proviene de una especificación por parte de Microsoft del patrón Presentation Model de Martin Fowler. Es muy parecido al MVC aunque su uso se centra en el desarrollo de aplicaciones basadas en WPF y Silverlight.
Hasta que no he empezado a trabajar con Windows Phone 7 y Silverlight, no lo había usado nunca; sin embargo, una vez que lo comprendes y le coges el truco es una de las formas más cómodas de desarrollar aplicaciones. Gracias a las capacidades de databinding existentes en WPF/SL la creación de aplicacionse se vuelve bastante más sencilla y cómoda de llevar a cabo.
Aunque la implementación del patrón se puede realizar a mano, ya hay algunos toolkits que nos evitan volver a tener que crear los elementos básicos a la hora de trabajar con MVVM. El que he probado ha sido el MVVM Light Toolkit. Tal y cómo lo definen en su página web:
The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in WPF, Silverlight and in the Windows Phone 7.
Este toolkit ayuda a separar las Vistas del Modelo, lo que permite crear aplicaciones más sencillas y fáciles de mantener y extender. También facilita el desarrollo de aplicaciones que se puedan testear .
Si estáis interesados en aprender un poco más sobre ello os dejos la siguiente información:
Con la implantación cada vez más extendida de las prácticas de programación extrema (eXtremeProgramming) han surgido una serie de prácticas que han cambiado la forma en la que se venía desarrollando el software.
Una de las prácticas más importantes de esta nueva forma de desarrollar es el Desarrollo Guiado por Pruebas o TDD. Esta práctica engloba a otras dos:
Escribir las pruebas primero (Test First Development)
Refactorización (Refactoring)
Si queremos aplicar esta técnica en nuestros proyectos de Windows Phone 7 necesitaremos configurar algunas cosas para tener un proyecto de pruebas funcionando.
Crear un nuevo proyecto de aplicación para Windows Phone 7.Las pruebas que realicemos se ejecutarán directamente en el simulador para probar nuestro código. Por ello, es necesario que el proyecto que albergue las pruebas sea de este tipo.
Añadir las referencias necesarias del Unit Test FrameworkÉstas serían:
Añadir una nueva clase estandar.Aquí añadiríamos el código de los test que quisiéramos ejecutar, por ejemplo, uno que pruebe que todo está funcionando.
Una de las desventajas que tiene el mundo hardware respecto al software sonlos costes relacionados con los materiales necesarios para realizar un proyecto. Cuando muchos proyectos software solo necesitan un editor de texto y un compilador para tener un programa corriendo, en los proyectos hardware los elementos mínimos son mucho más costosos y variados.
Gracias a proyectos como Ar/Netduino, los costes de iniciación en el mundo de la electrónica se han rebajado mucho. Ambas placas se pueden encontrar por menos de 30€ e incorporan el hardware necesario para comenzar a desarrollar nuestros planes de conquista del mundo desde el momento en que caen en nuestras manos (junto con algún componente extra como cables, sensores, actuadores, etc. )
Por ello, debido a que no siempre se dispone del dinero necesario para comprar el hardware o por simple comodidad a la hora de realizar pruebas rápidas, se crearon los emuladores que permiten probar nuestros proyectos sobre este hardware ficticio. Con Netduino, gracias a su suporte del .Net Micro Framework es posible utilizar el emulador extensible que incopora este Framework para crear un emulador para la plataforma.
De ahí surgió crear el proyecto Netduino Emulator, un emulador para poder probar nuestros proyectos para Netduino antes de disponer del propio hardware en nuestras manos. Cuatro personas somos las que estamos trabajando en las primeras fases del proyecto que poco a poco va tomando forma. Iré contando las novedades según se vayan produciendo.