jueves, octubre 04, 2007

Los desarrolladores de Mobile estamos olvidados. ¿Qué podemos hacer?

Acabo de publicar sobre las novedades de TFS 2008 y estuve reflexionando (nuevamente sobre lo mismo), me gustaría que hubiera tantas nuevas en .NET CF como en otras áreas de VS2008 pero a veces los desarrolladores de Mobile nos sentimos un poco olvidados. Pruebas de estos son las enormes listas de novedades áreas como ADO.NET, ASP.NET, WPF, TFS 2008, AJAX, Silverlight, LINQ ¿y qué tenemos en Mobile?

No hay soporte para Silverlight for devides (aún), no hay soporte para SyncServices for devices (aún), WCF sólo implemente un subset del framework, no hay grandes cambios en ASP.NET for devices. Algunas de las ventajas del IDE no las podemos usar para mobile.

Por otro lado mientras algunos productos como el Smart Cliente Software Factory sigue evolucionando, tan así que se convertirá en algún momento en Acropolis y el Mobile Cliente Software Factory ha sido olvidado.

Bueno finalmente desarrollamos para mobile, así que más acción y menos quejas. Acabamos de migrar el MCSF a .NET 3.5 y funciona de maravilla junto con algunos de nuestros proyectos sólo para probar. La migración fue sencilla, la única parte que falta es el guidance, qué es como ayuda para ciertas acciones tipicas en el desarrollo del proyecto. Esto es porque no las nuevas versiones de GAT y GAX no son compatibles con la que hemos venido usando. Esperamos migrar esto al nuevo GAT y publicar en gotdotnet junto con algunas extensiones que hemos hecho al Software Factory. También en proceso de desarrollo estan unos Hands On Lab del que posiblemente publiquemos su versión en inglés y español.

En cuanto publiquemos la nueva version de MCSF y las extensiones pondre el link.

Por otro lado vale la pena comentar que en el nuevo sistema operativo Windows Mobile 6.0 hay varias cosas nuevas que valen la pena un vistazo. Entre ellas destacan claramente el emulador de celular y GPS.

Algo de lo más fregón para la nueva versión del IDE relacionada con mobile son las pruebas unitarias. Mientras yo publico algo más detallad pueden leer el Post del Equipo de .NET CF con una lista de otras mejoras, algo sobre los .NET CF 3.5 PowerToys y que hay de nuevo para WCF y Mobile

Había publicado ya un poco como parte de otro post algo de lo nuevo para mobile. Así que hago un copy/paste de estas ventajas.

...aunque se espera un WPF/E no será una de estas (Silverlight para mobile), pero existe ya un Compact WCF o WCF-E. El primero, WPF Everywhere, es para usar XAML y las capacidades gráficas de WPF en otras plataformas como Web (ahora conocido como Silverlight) y otros Sistemas Operativos incluyendo Windows CE y por lo tanto Windows Mobile, sin embargo WPF-E saldrá a la luz primero como un componente para diferentes navegadores antes de estar disponible para Mobile, por lo que seguramente no lo veremos incluido como parte de Orcas. Compact WCF usará SMTP para poder tener colas de mensajes en aplicaciones desconectadas y un protocolo para poder comunicarse por push con los dispositivos, estos dos por si sólo son ya grandes ventajas, sin embargo esperaríamos algo de Remoting y WS-* para tener realmente mejores herramientas de comunicación desde estos dispositivos. Aunque no vengan como parte de WCF-E tendremos todo el stack para hacer algo nosotros.
Siguiendo con Mobile, tendremos también disponibles las nuevas características del lenguaje, buena parte de LINQ y otras tantas mejoras. Aunque el Beta de VS actual no incluye el SDK para Windows Mobile 6.0, esperamos que el release de Orcas si lo incluya. Hay otras áreas muy relacionadas con Mobile como Sql Server Compact Edition 3.5 que recibirán grandes mejoras. La más importante de estas considero será SyncServices de ADO.NET, que lamentablemente no contará con la versión de Mobile para esta versión.


Definitivamente, aunque tal vez no como parte de un major release como es Orcas, hay mucha innovación que se está haciendo (y quisiera decir estamos haciendo) alrededor Mobile como gente que lo esta usando junto con Robotics Studio, Virtual Earth, APIs para Facebook, RFID, AJAX, etc. Es sólo cuestión de buscar. Los siguientes son una serie de links que valen la pena:

José Miguel Torres publica de temas de Mobile.
DesarrolloMobile tiene muchos recursos organizados por tecnología.
OpenNetCF agrega algunas cosas que el framework no considera, como mejor soporte para comunicación serial entre muchas
Nick Landry tiene varios posts relacionados con Virtual Earth y Mobile.
OrientationAware.NET la gente de Clarious Consulting extendio el OAC del MCSF para hacer más sencillo el desarrollo para dispositivos con diferentes resoluciones y form factors.

5 comentarios:

Hernan dijo...

Miguel, tenes alguna novedad acerca de cuando va a estar publica la version 2008 de MCSF?

Miguel Madero dijo...

Que tal Hernan:

Tenemos una actualizacion en http://www.codeplex.com/MobileBlocks
Ve a la parte de Source Code.

Avisame si necesitas algo. Podemos usar el foro del proyecto.

Saludos

Mauricio dijo...

Hola, miguel buenos dias. Tengo un problema con el DisconnectedAgent, usandolo en Windows CE 5.0. Por lo que investigue, el problema viene por el Connection Monitor, que necesita de 'cellcore.dll' para el manejo de las conexiones. Queria saber si habian desarrollado alguna implementacion de esto pero para windows CE.
Desde ya muchas gracias.

Miguel Madero dijo...

Mauricio,

El problema no es ConnectionMonitor como tal, sino la implementación de las conexiones que usa por default. El problema principal es que ConnectionMonitor no ofrece una manera sencilla de agregar nuevas implementaciones de conexión.

Tenemos dos opciones, puedes modificar el código del ConnectionMonitorFactory para que cree una instancia de tu conexión en lugar de limitarse a las tres ya existentes.

La otra opción es esperar un par de días a que actualicemos el código en Codeplex, ahora el ConnectionMonitor revisa si se está usando una conexión que no es de las tres "predefinidas", espera un nuevo atributo, type y creara una instancia de ese tipo.

En ambos casos necesitarías crear una clase que herede de Connection específica para CE. Posiblemente algo se pudiera reutilizar de las otras, no sé si NicConnection sea compatible con CE.

Otra opción es probar cambiando el app.config para que sólo use NicConnection, pudiera ser que esta funcione.

Miguel Madero dijo...

Por cierto, no he intentado lo que te comento con CE, pero lo hicimos funcionar para el escritorio y está funcionando muy bien. Sólo queremes esperar unas pruebas más antes de actualizar el código en Codeplex.