Acerca del desarrollo web para móviles con .NET

Este artículo surge como una respuesta a un comentario en el artículo inicial de Cuestiones básicas de desarrollo para dispositivos móviles con .NET. La pregunta iba orientada a cómo se desarrollan aplicaciones Web para dispositivos móviles. Y es que,inicialmente me faltó aclarar que los artículos estaban enfocados en el desarrollo de aplicaciones cliente en el dispositivo móvil, no en aplicaciones de servidor Web para dispositivos.

Si revisamos la plataforma de desarrollo .NET, tenemos dos vertientes principales de aplicaciones claramente diferenciadas: aplicaciones Web y aplicaciones de cliente enriquecido. Esto se cumple no solo en el .NET Framework estándar, sino también en el .NET Compact Framework para los dispositivos móviles. Veamos el siguiente gráfico.

.NET Mobile Development Platform

En este diagrama podemos apreciar las 2 vertientes de aplicaciones para dispositivos móviles. Algunas de las ventajas por las que prefiero enfocarme en el desarrollo de aplicaciones cliente para dispositivos móviles son la capacidad de aprovechar de la mejor manera posible en el desarrollo las características del dispositivo y de las mejoras y características que nos brinda el .NET Compact Framework para este tipo de aplicaciones. Tal como lo muestra el gráfico, por el lado de las aplicaciones Web el cliente consiste básicamente en el navegador (browser) del dispositivo y no se puede aprovechar en este modelo de programación muchas de las características que puede tener el dispositivo.

Ahora revisemos un poco de historia. En los tiempos de Visual Studio .NET 2003 los diversos tipos de dispositivos disponibles manejaban maneras muy diferentes de renderizar el contenido HTML (tanto entre dispositivos como con browsers de PCs tradicionales), motivo por el cual Microsoft liberó el Microsoft Mobile Internet Toolkit (MMIT). La versión 1.0 del MMIT permitía generar código cliente para los browsers de los dispositivos en 4 diferentes lenguajes posibles: HTML 3.2, cHTML 1.0, WML 1.1 y WML 1.2.

Conforme pasó el tiempo el avance de la tecnología y la asimilación casi completa por parte de la industria de estándares Web como HTML 4.0, CSS, JavaScript y XHTML ha llevado a que hoy en día muchos de los navegadores incorporados en los dispositivos (por no decir todos) soportan (casi) las mismas características que un navegador de escritorio. Esto a nivel tecnológico. Pero volvemos ahora a revisar los retos del desarrollo para dispositivos: la resolución de pantalla limitada, la velocidad y costo de conexión, el consumo de batería que debemos contemplar, etc. Nuevamente nos encontramos con la necesidad de hacer versiones de nuestras aplicaciones Web (o, por lo menos, parde ellas) específicas para dispositivos móviles.

Ahora bien, en Visual Studio 2008 no tenemos disponibles plantillas para crear formularios web y aplicaciones web móviles, plantillas que sí estaban disponibles en Visual Studio 2005. Felizmente Ronald Armas publicó un artículo acerca de cómo habilitar estas plantillas en el entorno de nuestro Visual Studio 2008. Adicionalmente, en una discusión al respecto en el foro de ASP.NET (ver referencias adicionales) se mencionó entre las siguientes herramientas adicionales como complemento para desarrollar aplicaciones Web para dispositivos móviles:

Nuevamente, quedo a espera de sus comentarios, preguntas y/o sugerencias. Hasta la próxima. Nos leemos!


Referencias adicionales:

Cuestiones básicas de desarrollo para dispositivos móviles con .NET – Parte II

Continuamos con esta serie de artículos en la que vamos revisado algunas de las importantes decisiones iniciales a considerar al emprender un proyecto de desarrollo móvil. En el artículo anterior abordamos el tema de la elección de la plataforma sobre la que implementaremos nuestra aplicación. Recordemos que la plataforma en este caso viene señalada por la versión del Sistema Operativo del dispositivo, y la edición para el tipo de dispositivos a utilizar, dependiendo de si presentaban pantalla táctil y/o funcionalidad de teléfono.

En esta ocasión nos vamos a centrar en revisar el conjunto de herramientas que tenemos a nuestra disposición para desarrollar aplicaciones para las diferentes plataformas. Dado que, como ya se mencionó en el artículo anterior, la plataforma Windows CE (o Windows Embedded) está orientada al desarrollo de software para dispositivos personalizados, vamos a dejar de lado esta plataforma de ahora en adelante y vamos a enfocar los artículos al desarrollo para las diferentes ediciones de Windows Mobile. Cabe resaltar que solo voy a mencionar en este artículo las herramientas básicas que extienden nuestro IDE (Visual Studio) para soportar el desarrollo en estas plataformas, puesto que ya César Fong y José Miguel Torres ya han hecho una excelente recopilación de herramientas y recursos para desarrollo en Windows Mobile.

Cerrando casi el presente año 2009 tomaremos como punto de partida las 2 últimas versiones (versiones finales) de Visual Studio disponibles a la fecha, es decir, Visual Studio 2005 y Visual Studio 2008. Y es que si bien ya desde Visual Studio .NET 2003 teníamos plantillas para el desarrollo de aplicaciones para dispositivos móviles, no podemos pasar por alto el hecho de que las herramientas que revisaremos a continuación solamente son compatibles con las versiones 2005 y 2008 de Visual Studio. Adelantándonos un poco al siguiente artículo, también podemos mencionar que en Visual Studio .NET 2003 solamente podíamos desarrollar aplicaciones para dispositivos móviles utilizando la versión 1.0 del .NET Compact Framework (ya veremos en ese artículo las diferencias entre las diferentes versiones del .NET CF, por el momento continuemos).

Veamos las plataformas soportadas “out-of-the-box” por estos entornos de desarrollo:

  • Visual Studio 2005
    • Pocket PC 2003 SE
    • Smartphone 2003 SE
  • Visual Studio 2008
    • Pocket PC 2003
    • Windows Mobile 5.0 Pocket PC R2
    • Windows Mobile 5.0 Smartphone R2

Adicionalmente, Microsoft ha publicado un conjunto de herramientas adicionales (de libre disponibilidad) conforme las ha ido liberando las nuevas plataformas para extender el soporte de estos entornos de desarrollo. Y es aquí donde surge un conjunto de siglas que inicialmente resultan un poco confusas: SDK, DTK, DRK. Ampliemos un poco el artículo al respecto publicado en el blog de Windows Mobile (hoy conocido como Windows Phone Blog).

Los SDKs (Kits de Desarrollo de Software) contienen precisamente las herramientas, los emuladores, la documentación y ejemplos que amplían Visual Studio para soportar una versión específica de la plataforma de Windows Mobile. Así tenemos actualmente los siguientes SDKs disponibles:

Como se detalla en las descripciones de estas descargas, los SDKs para WM5 solamente son compatibles con Visual Studio 2005 puesto que 2008 ya incorpora una versión actualizada de estas herramientas. Por su parte, los SDKs de WM6 son compatibles con ambas versiones de Visual Studio.

Los DTKs (Kits de Herramientas del Desarrollador) son la forma en la cual Microsoft ha distribuido las herramientas para soportar el desarrollo para dispositivos con Windows Mobile 6.5. Estas herramientas per se no son suficientes, pues al ser 6.5 una mejora sobre la plataforma 6.0 existente, Microsoft brinda estas herramientas como adicionales a los SDKs de Windows Mobile 6.0 para, en conjunto, brindar el soporte a la nueva plataforma 6.5.

OK hasta este punto hemos visto el soporte a las versiones 2003, 5.0, 6.0 y 6.5 de Windows Mobile. ¿Y para la versión 6.1? Pues bien, esta versión (así como la 6.1.4) no presentan diferencias respecto a 6.0 desde el punto de vista del desarrollador (esto es, no hay APIs adicionales o nuevas herramientas que presenten un cambio en cuanto a la experiencia en el desarrollo). Los cambios principalmente están dados en diferentes form factors o resoluciones de pantalla soportadas y en características del software, por ejemplo, en el caso de 6.1.4, la incorporación del nuevo Internet Explorer Mobile 6. Entonces, si vamos a desarrollar para estas versiones de la plataforma, debemos utilizar los emuladores correspondientes. Lo mismo aplica si deseamos, por ejemplo, probar una aplicación que muestre su IU en el idioma del dispositivo (localización). Deberíamos probar nuestra aplicación utilizando los emuladores con la plataforma en los idiomas deseados.

Si revisan todas las descargas mencionadas hasta aquí, siempre se refieren a las ediciones Standard y Professional, pero en no hay descarga para la edición Classic. Si volvemos al cudro de las ediciones disponibles según las características del dispositivo, vamos a ver que las características de pantalla táctil determinarán la edición de SDK a utilizar. Por ejemplo, ya sea que deseemos desarrollar para las ediciones Professional o Classic, descargaremos las herramientas de Professional, y para la plataforma Standard descargaremos las herramientas de Standard.

Con pantalla táctil

Sin pantalla táctil

Con capacidades de teléfono

Pocket PC Phone Edition
Professional

Smartphone
Standard

Sin capacidades de teléfono

Pocket PC
Classic

[no existe]

  Herramientas Professional Herramientas Standard

El siguiente concepto es el de DRK (Kit de Recursos del Desarrollador). Se trata de un DVD con una compilación de contenido (los SDKs, PPTs y videos de webcasts, laboratorios, ejemplos y herramientas adicionales, etc…) para empezar a desarrollar en la versión correspondiente de la plataforma. Así se han distribuido versiones del DRK para Windows Mobile 5.0, 6.0 y 6.5. Este DVD se podía adquirir pagando los gastos de envío (gratis si estabas en USA) y, particularmente en el caso de 5.0, se puso de libre disponibilidad una descarga alternativa con la mayoría del contenido (a excepción de videos y el contenido más pesado del DVD). Lamentablemente esa descarga ya no está disponible, pero llegué a descargarlo en su momento y fue de gran utilidad. Posteriormente en un evento de Microsoft me regalaron una copia del DRK de 6.0. Muy útil también y con gran parte del contenido actualizado. El problema con la versión de 6.5 es que existe el link en el sitio de MSDN (aquí) donde supuestamente podríamos ordenar el kit, pero hace unos meses reemplazaron el contenido de esa página con material de SQL 2008 R2 (fíjense en el título, que se ha mantenido) y ya no se puede acceder al formulario para adquirir el DRK. Una pena en verdad.

Windows Mobile 5 Developer Resource Kit     Windows Mobile 6 Developer Resource Kit

Bueno, y para cerrar este artículo, recordar que todos estos SDKs tienen como pre-requisito un aplicativo que permita sincronizar el dispositivo móvil (o el emulador) con la PC. Qué aplicativo utilicemos dependerá de la versión del Sistema Operativo de nuestra PC. Para Windows XP o Windows Server 2003 debemos utilizar ActiveSync 4.5, y para Windows Vista, Windows Server 2008 o Windows 7 debemos utilizar el Centro de Dispositivos de Windows Mobile.

Windows Mobile Device Center 6.1

Nuevamente espero que este artículo sea de utilidad para toda la gente que quiere involucrarse en el desarrollo de aplicaciones para dispositivos móviles con la plataforma .NET. El siguiente artículo en la serie presentará algunos detalles acerca de las diferentes versiones del .NET Compact Framework disponibles. Igual seguiré atento al feedback de la comunidad para poder mejorar lo que se deba o profundizar en algún tema que por ahí haya quedado suelto. Saludos. Hasta la próxima. Nos leemos!

Cuestiones básicas de desarrollo para dispositivos móviles con .NET – Parte I

Esta vez abordaré un tema básico que genera muchas confusiones en gente que recién empieza a desarrollar para dispositivos móviles o que quiere orientar su desarrollo a esa interesante rama. Y es que en las diversas charlas y talleres que he dictado de desarrollo móvil,al inicio las dudas más frecuentes circundan siempre los temas de:

  • Los sistemas operativos (plataformas) de los dispositivos (por ejemplo, Pocket PC 2003, Windows Mobile 5, 6, 6.1 o 6.5, Windows CE, Windows Embedded).
  • Las ediciones de los sistemas operativos y sus diferencias (Pocket PC, Smartphone, Pocket PC Phone Edition, Professional, Standard, Classic).
  • Las versiones del motor de ejecución – el.NET Compact Framework – compatibles con esas versiones de sistemas operativos (.NET Compact Framework 1.0, 2.0, 3.5).
  • Las versiones de Visual Studio compatibles con esas plataformas y versiones del .NET Compact Framework.

Y es que, si bien .NET soporta desde ya hace mucho tiempo el desarrollo móvil, existen todos estos conceptos que, al principio resultan quizás algo confusos para quienes quieren entrar en la “onda móvil”. Y esto muchas veces causa tanta confusión que he conocido personas que en un momento dijeron “esto no es para mí, muy complicado, mejor sigo en Web o en Windows” pero que, cuando comprendieron mejor todos estos conceptos, vieron que se trata de toda una serie de cuestiones y decisiones de importancia fundamental para el desarrollo orientado a dispositivos.

Algo que sucede muy frecuentemente es que al incio de los talleres de desarrollo móvil (o simplemente cuando le empiezo a explicar a alguien acerca del tema), la mayoría de personas preferiría obviar la teoría inicial (a la cual siempre trato de darle la importancia debida) y empezar como en todo curso de programación… con su “Hola mundo” en versión móvil. Pero si hiciera eso y, por ejemplo, directamente ejecutara el Visual Studio 2008 y les dijera “Vamos a crear una aplicación de dispositivos. Seleccionen en Project Type ‘Smart Device’ y la plantilla ‘Smart Device Project’. Luego elijan en platform ‘Windows Mobile 6 Professional SDK’, en .NET Compact Framework version elijan ‘.NET Compact Framework Version 3.5’, dejen seleccionada la plantilla ‘Device Application’ y denle clic a ‘OK’. Y así creamos una aplicación móvil.”. Es cierto, así habríamos creado una aplicación móvil pero, en el mejor de los casos, el más curioso empezaría con las preguntas de rigor:

  • ¿Y por qué seleccionamos Windows Mobile 6 Professional SDK como plataforma?
  • ¿Y cuál es la diferencia con Windows Mobile 6 Standard SDK? (Muchos asumen erradamente que, como en la nomenclatura de las ediciones de Visual Studio, la edición Professional contiene todo lo de la Standard con algunas herramientas o funcionalidades adicionales)
  • ¿Y qué es Windows CE y para qué tipo de aplicaciones sirve?
  • ¿Por qué seleccionamos la versión 3.5 y no la 2.0 del .NET Compact Framework?
  • ¿No había también versiones 1.0, 1.1 y 3.0 como en el .NET Framework completo?
  • etc…

En el peor de los casos nadie preguntaría nada, y todos estos conceptos quedarían “en el aire”, por decirlo de alguna manera. Y es que estos conceptos no son nada triviales, sino todo lo contrario. .NET es la realización de Microsoft de una plataforma de desarrollo unificada para los diferentes tipos de aplicaciones y lenguajes, orientado a sus sistemas operativos Windows. Y precisamente los desarrolladores .NET de aplicaciones para dispositivos móviles trabajan en un mundo con una amplia gama de dispositivos de diferentes formas y tamaños, con diferentes capacidades y características unos de otros. Y precisamente conforme han ido evolucionando en este caso los sistemas operativos de Windows para dispositivos móviles, esta evolución ha ido acompañada de diferentes versiones de la plataforma de desarrollo para dispositivos móviles (el .NET Compact Framework) y de diferentes herramientas de desarrollo (versiones de Visual Studio, kits de desarrollo o kits de herramientas) para aprovechar las características de las nuevas versiones de los sistemas operativos y del .NET Compact Framework. Es por estos motivos que al emprender un proyecto de desarrollo sobre plataforma móvil, hay que tener muy en cuenta las capacidades que requerimos del dispositivo, la versión del Sistema Operativo y del .NET Compact Framework sobre el que se ejecutará nuestra aplicación, y las herramientas que utilizaremos/requeriremos para poder llevar a cabo dicho desarrollo. Si tomamos una mala decisión en estos puntos al principio de nuestro proyecto, podríamos tener muchos problemas luego, así que empecemos.

De Sistemas Operativos y Ediciones

En esta primera entrega revisaremos rápidamente las diferentes alternativas de sistemas operativos móviles, sus ediciones y sus diferencias.

A continuación tenemos una lista resumida de los diferentes sistemas operativos Windows para dispositivos disponibles en la actualidad (extraída de Wikipedia):

  • Pocket PC 2003 (Windows Mobile 2003 for Pocket PC)
  • Smartphone 2003 (Windows Mobile 2003 for Smartphone)
  • Pocket PC 2003 Phone Edition (Windows Mobile 2003 for Pocket PC Phone Edition)
  • Windows Mobile 5.0 Pocket PC
  • Windows Mobile 5.0 Smartphone
  • Windows Mobile 5.0 Pocket PC Phone Edition
  • Windows Mobile 6.0 Professional
  • Windows Mobile 6.0 Standard
  • Windows Mobile 6.0 Classic
  • Windows Mobile 6.1 Professional
  • Windows Mobile 6.1 Standard
  • Windows Mobile 6.1 Classic
  • Windows Mobile 6.5 Professional
  • Windows Mobile 6.5 Standard
  • Windows Mobile 6.5 Classic

¿Lo notaron? Por cada versión del sistema operativo Windows Mobile (actualización: con excepción de Windows Mobile 6.5) tenemos 3 ediciones. Pongámoslo de la siguiente manera:

Windows Mobile 2003

Windows Mobile 5.0

Windows Mobile 6.0

Windows Mobile 6.1

Windows Mobile 6.5

Windows Mobile 2003 for Pocket PC Windows Mobile 5.0 Pocket PC Windows Mobile 6.0 Professional Windows Mobile 6.1 Professional Windows Mobile 6.5 Professional
Windows Mobile 2003 for Smartphone Windows Mobile 5.0 Smartphone Windows Mobile 6.0 Standard Windows Mobile 6.1 Standard Windows Mobile 6.5 Standard
Windows Mobile 2003 for Pocket PC Phone Edition Windows Mobile 5.0 Pocket PC Phone Edition Windows Mobile 6.0 Classic Windows Mobile 6.1 Classic Windows Mobile 6.5 Classic

Windows Mobile 6.1

Microsoft ha diseñado una edición especial de sus diferentes sistemas operativos Windows Mobile para cada tipo de dispositivo según las características de soporte de pantalla táctil y de capacidades de teléfono. Originalmente, y hasta Windows Mobile 5.0 las ediciones se llamaban Pocket PC, Smartphone y Pocket PC Phone Edition, y a partir de Windows Mobile fueron renombradas como Classic, Standard y Professional respectivamente. El siguiente cuadro simplifica las diferencias entre estas ediciones (arriba la nomenclatura anterior y abajo la nueva):

Con pantalla táctil

Sin pantalla táctil

Con capacidades de teléfono

Pocket PC Phone Edition
Professional

Smartphone
Standard

Sin capacidades de teléfono

Pocket PC
Classic

[no existe]

Consideremos también los siguientes sistemas operativos Windows para dispositivos móviles mencionados en el Microsoft Mobile Development Handbook (excelente libro de Andy Wigley, Daniel Moth y Peter Foot, tres experimentados desarrolladores en Windows Mobile):

  • Windows CE 4.2
  • Windows CE 5.0
  • Windows Embedded CE 6.0

Si recordamos, al elegir la plataforma para nuestro proyecto de dispositivos en Visual Studio aparecía, además de los Sistemas Operativos Windows Mobile, la plataforma Windows CE.

AddSmartDeviceProject

¿Y qué es Windows CE? ¿y en qué se diferencia de Windows Mobile? Bueno, veámoslo de la siguiente manera. Windows CE (o ahora conocido como Windows Embedded, a partir de la versión 6.0) es una línea diferente de sistemas operativos modulares para fabricantes de dispositivos. ¿Y qué rayos significa esto de sistema operativo modular? Pues simple, por ejemplo, comparemos una computadora y su sistema operativo Windows tradicional con un surtidor computarizado de combustible que tiene como sistema operativo Windows Embedded. En el caso de la computadora, el sistema operativo cuenta con todos los “módulos” para que los dispositivos y servicios actuales (y los que se agreguen posteriormente) puedan funcionar. Entre estos módulos podemos contar por ejemplo el de manejo de salida de video, de capacidades multimedia, de comunicación con periféricos de entrada (teclado, mouse, trackball…), entre otros módulos. En el caso del surtidor de combustible no tendría ningún sentido que el sistema integre por ejemplo capacidades multimedia o por ejemplo de lectura de dispositivos de almacenamiento removible como CDs, DVDs o unidades USB. Precisamente el fabricante, dependiendo del hardware que utilizará y soportará su dispositivo, crea una imagen del sistema operativo personalizada para ese dispositivo, solamente con los módulos requeridos para dicha implementación.

Y a todo esto, ¿que tiene que ver esto con Windows Mobile? Pues que las diferentes versiones de Windows Mobile son en realidad imágenes de estos sistemas operativos embebidos con ciertos módulos ya preestablecidos, por lo cual, en principio, cuando desarrolles para dispositivos por ejemplo que tengan Windows Mobile 5.0 PocketPC Phone Edition, las características y APIs que puedas utilizar del dispositivo serán estándares independientemente de la marca. Esto es una gran diferencia respecto al desarrollo móvil en Java por ejemplo, en el cual dependiendo del dispositivo hay que determinar cuáles APIs se pueden utilizar y cuáles no.

Por el momento dejo el tema desarrollado hasta este punto. Espero que hayan encontrado al menos interesante este artículo y que quienes desean subirse a la ola de desarrollo móvil, por lo menos tengan más clara la figura. En la siguiente entrega de esta pequeña serie de artículos abordaré el tema de las herramientas de desarrollo básicas a utilizar con estas diferentes plataformas. Nuevamente gracias por tomarse el tiempo de leer. Si desean aportar con comentarios sobre lo que les gusta y lo que no les gusta o si simplemente desean preguntar algo, estaré al tanto. Un saludo. Nos leemos!

Hola a todos

Bueno, siendo las 00:10 hrs. del martes 08 de Diciembre, daré inicio a mi actividad en este blog que he tenido “acumulando telarañas” por mucho tiempo.

Espero poder aportar lo poco que la experiencia me ha brindado y, por supuesto estaré atento a los comentarios para saber si qué voy haciendo mal y qué se puede mejorar.

Muchas gracias a Rodrigo por “resetear” mi cuenta, pues mi contraseña estaba amarrada a una cuenta de email de trabajo anterior.

A empezar… Nos leemos.

Concurso “Net Minds” de MSDN

Revisando los blogs a los que me encuentro suscrito encontré algunas referencias (de Rafael y de Marc) a un nuevo concurso lanzado por MSDN. Se trata de NET Minds, que a pesar del término NET (OJO no es .NET pero tiene los colores similares a los de la nueva versión de Visual Studio) no se trata de un concurso de desarrollo o de quién conoce más del .NET Framework o algo similar. Es decir, parece que no será nada técnico, sino más bien un concurso de lógica.

Marc Rubiño hace referencia a que se tratará de 3 retos en diferentes fechas y en la web del concurso sólo he visto mención del 14 de diciembre, por lo cual asumo que conoce más acerca de este concurso.

Lo que no me queda claro es el público objetivo del concurso, pues no hay página de “Términos y condiciones” como en concursos previos. En los comentarios de Marc menciona que “parece ser solo para España”. En fin, de todos modos participaré. Si no se gana, al menos parece que servirá como buen ejercicio mental. 😉

Saludos.