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!

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

  1. Hola, Isidro. Simplificando, un sitio Web se ejecuta (obviamente) en un servidor web y en el lado del cliente solamente se utiliza el browser para acceder a él, sin aprovechar las características del equipo (sea este un dispositivo móvil o una PC). Ahondaré más al respecto en un artículo para comparar los escenarios. Saludos y gracias por la pregunta.

  2. Buenas, yo tngo una duda a ver si hay alguien que me pueda echar una mano…

    Quiero hacer una aplicacion para windows phone, que lea de la tarjeta de memoria del movil y mande un mail con el adjunto de la tarjeta de memoria. Se puede hacer?
    Yo se que una aplicacion de escritorio normal se puede hacer de sobra pero para windows phone no lo tengo tan claro, un saludo y gracias

  3. Buenas, para el desarrollo movile se usa una base de datos local intalada en el equipo movile que refleja la estrucctura de la BD colgada en el sevidor ? . . Como se modelo esa BD local ?

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *