cerrar-sesion editar-perfil marker video calendario monitor periodico fax rss twitter facebook google-plus linkedin alarma circulo-derecha abajo derecha izquierda mover-vertical candado usuario email lupa exito mapa email2 telefono etiqueta

Programación para dispositivos móviles con Visual Studio

Escrito por Redacción en Programación
no hay comentarios Haz tu comentario
Imagen de logotipo de facebook Imagen de logotipo de Twitter Imagen de Logotipo de Google+ Imagen de logotipo de Linkedin

Nuestra visión

Hace ya varios años que Microsoft disponía de entornos específicos para la programación de dispositivos móviles (sistemas empotrados, PDAs, smartphones, etc.). Se trataba de entornos particulares, exclusivamente para este tipo de programación y que requerían de perfiles de desarrolladores muy concretos y especializados. En ese momento se buscaban desarrolladores para “Windows Embebed Tools”, nuestro entorno de programación para dispositivos.

Esto no solo ocurría con los dispositivos móviles, teníamos entornos especializados para la programación de aplicaciones Web, integración para office, etc.
Obviamente esto representaba un problema, y era que cada programador o diseñador de software debía tener un perfil específico por tipos de aplicaciones, Web, móviles, office, etc. No solo era un problema para los propios programadores que debían conocer múltiples SDKs y sobre todo entornos diferentes, sino sobre todo para las empresas, que no podían reutilizar a sus desarrolladores en diferentes tipos de proyectos.

Otro problema que suponía este paradigma de programación es que a menudo aplicaciones muy similares para diferentes entornos (Web, rico, móviles) o ya incluso para diferentes versiones de los dispositivos móviles (Windows CE) requerían ser codificadas por separado, pudiéndose reutilizar poco código entre todas ellas.

Y aquí es donde entró en juego .NET. Hace ya varios años de eso, recuerdo incluso la primera vez que oí hablar del .NET Framework allá por el año 1.999 en el TechEd de Ámsterdam como cliente de Microsoft. Ha llovido mucho desde entonces y ya podemos hablar de una plataforma madura, en números absolutos la plataforma de desarrollo más utilizada en Estados Unidos (mercado de referencia), pero sobre todo también en España, nuestro mercado.

.NET tenía justamente esta visión, un entorno de desarrollo único, independientemente del tipo de aplicación (rica, Web, móvil, etc.) y que permitiese poder ejecutar el mismo código en diferentes dispositivos.

Para ello se diseñó el .NET Framework, una capa de abstracción entre el hardware del dispositivo y el código fuente, que permitía aislar al programador del tipo de hardware y sistema para el que se codificaba en la mayor medida de lo posible. Toda aplicación .NET requiere por lo tanto este framework instalado en la máquina. Un framework que en muchos casos ya viene con el sistema operativo o, que en caso contrario, puede descargarse de forma rápida y sencilla en apenas 20 Mb.
<doc212|center>

Independientemente del lenguaje que usemos en Visual Studio (Visual Basic, C#, J# o cualquier otro manejado de otro fabricante), todos generan lo que se conoce como Código Intermedio (IL Code). Este es el código que se compila en tiempo real por el .NET Framework y luego es ejecutado en última instancia directamente sobre el procesador.

El entorno de desarrollo por aquel entonces era Visual Studio 2002 para el .NET Framework 1.0, tras el cual hemos tenido otras versiones (2003 Framework 1.1, 2005 Framework 2.0 y actualmente .NET Framework 3.0 incluido con Windows Vista).
Hoy en día, con Visual Studio Team System 2005 se ha dado otro gran paso adelante, un nuevo hito en las herramientas de desarrollo de Microsoft. Conseguido un entorno único para todo tipo de aplicaciones, el siguiente paso ha sido un entorno único para todos los roles que participan en un desarrollo de software, desde el Jefe de Proyectos hasta el Probador, pasando por Arquitecto, Desarrollador, Desarrollador de Base de Datos, etc. Pero esa es otra historia para otro artículo completo.

Requisitos Previos

Lo primero que necesitamos para este tipo de desarrollos es Visual Studio 2005. Cualquiera de las versiones de pago de Visual Studio ya ofrece un entorno de desarrollo para aplicaciones sobre Pocket PC 2003, Smartphone 2003 y Windows CE 5.0. A medida que van apareciendo nuevos dispositivos solo necesitamos descargar el SDK para actualizar Visual Studio. Por ejemplo, podemos descargar el SDK para Windows Mobile 5.0 Smartphone o Pocket PC.

Otro requisito es ActiveSync, el módulo que permite la conexión desde un PC con un dispositivo móvil y puede descargarse de forma gratuita desde la Web.

Todo el desarrollo que hagamos para dispositivos móviles necesita obviamente un dispositivo sobre el que poder probarlo. En este punto podemos usar un dispositivo físico conectado al PC a través de ActiveSync o uno de los emuladores que vienen por defecto con Visual Studio o se instalan con las SDKs correspondientes de cada nuevo sistema. Estos emuladores utilizan nuestra tecnología de virtualización y contienen una imagen binaria del Sistema Operativo original, con lo cual la compatibilidad con el dispositivo físico real es del 100%.

Independientemente del tipo de dispositivo que escojamos veremos como en tiempo real podremos hacer el despliegue de la aplicación al mismo y depurar la ejecución en el dispositivo desde nuestro Visual Studio en el PC. Exactamente como si de una aplicación rica se tratase, sin nada nuevo para el programador.

En este artículo trabajaremos con la versión Windows Mobile 5.0 Smartphone, pero todo puede extrapolarse a otras versiones de nuestros sistemas para movilidad basados en Windows CE.

Un primer ejemplo

Pues obviamente no debería ser otro más que el ya clásico “Hola, Mundo!”, al menos para este primer ejemplo.
<doc213|left>
Abrimos Visual Studio y en “Fichero/Nuevo/Proyecto” escogemos por ejemplo la opción “Windows Mobile 5.0 Smartphone/Device Application”, es indiferente que lo hagamos en el lenguaje Visual Basic o C#, esto lo dejo a elección del lector.
Tras elegir un nombre veremos como se crea el proyecto y aparece la Pantalla 1 en nuestro entorno de desarrollo.

¿Cuál es la diferencia para un programador que ya haya usado Visual Studio para otro tipo de aplicaciones? Pues prácticamente ninguna. Mejor todavía, ahora su “superficie de dibujo” es un smartphone, pero su paleta de herramientas sigue estando ahí, las propiedades, depuración, etc. Es el mismo modelo de programación.

Vamos con un primer ejemplo: Arrastramos un control Label al que ponemos “Hola, Mundo!” en su propiedad “Text” y pulsamos sobre la barra de menú azul de abajo en la pantalla del dispositivo para configurar un menú básico. Incluimos una opción “Hola” en el menú izquierdo y otra “Salir” en el menú derecho.<doc214|right>

La pantalla nos debería quedar algo parecido a la Pantalla 2.

Haciendo doble click en estas opciones tendremos acceso al código fuente que hay detrás. Este debe quedar como en la Pantalla 3.


private void menuItem1_Click(object sender, EventArgs e)

label1.Text = “Hola!!”;

private void menuItem2_Click(object sender, EventArgs e)

Close();

Pulsemos ahora Ctrl+F5 para ejecutar la aplicación (o bajo el menú Build). Fijaos que sale una pantalla preguntando que donde queremos ejecutar la aplicación (Pantalla 4).

<doc215|left>Aquí tenemos la opción de escoger un dispositivo real conectado al PC (la primera opción) o uno de los emuladores ofrecidos. Si escogemos la segunda opción y le damos a desplegar veremos como se lanza una imagen nueva del Sistema Operativo en el emulador, se despliega el .NET Compact Framework una primera vez al dispositivo, se despliega nuestra aplicación y se ejecuta (Pantalla 5).

Cuando cerremos el emulador podréis ver como pregunta si deseamos salvar el estado. Recordad que es una máquina virtual, así que podremos salvar dicho estado para no tener que partir de una máquina “nueva” en cada ejecución y por lo tanto tener que desplegar al dispositivo el .NET Compact Framework.<doc216|right>
Un detalle, recordad también cerrar la aplicación antes de salvar la máquina, de lo contrario la siguiente vez que queráis ejecutarla Visual Studio la encontrará arrancada y no podrá desplegar la nueva versión.

Depuración Integrada

Veamos ahora cómo depurar este tipo de soluciones. Para ello pongamos un breakpoint en el código que se ejecuta al pulsar el botón “Hola” haciendo clic con el ratón donde aparece el punto rojo en la Pantalla 6.

Una vez definido el breakpoint ejecutemos con F5 para entrar en depuración (o el menú Build) y cuando se haya arrancado el emulador pulsemos sobre el botón “Hola”, para ello tenemos que hacer clic sobre el que sería el botón hardware del dispositivo que está un poco más abajo de la pantalla, recordad que en este caso es un smartphone y la pantalla NO es táctil.

<doc213|center>
Inmediatamente después de pulsar la opción podréis comprobar como Visual Studio se detiene sobre la línea del breakpoint permitiéndonos depurar la aplicación como si de otra cualquiera se tratase. El funcionamiento y la experiencia es exactamente la misma sobre un dispositivo físico conectado al PC por USB o Bluetooth.

Dejad corred vuestra imaginación

Ya hemos visto los fundamentos básicos de programación de dispositivos móviles con Visual Studio. Una vez tengáis el Interfaz de Usuario creado arrastrando algunos controles de la barra de herramientas podréis:

_ Utilizar componentes de negocio que ya tengáis escritos en .NET simplemente agregando la referencia en el proyecto. Si tenemos ya una aplicación 3 capas con un buen diseño donde la lógica de negocio son librerías de componentes con código de negocio exclusivamente (cálculos, acceso a BDs, etc.) podremos utilizar dicho assembly en el dispositivo. Tened en cuenta que el dispositivo ejecuta un subconjunto del framework, así que siempre y cuando el código que contenga esté soportado podrá funcionar sin cambios. Si este código solo contiene Lógica de Negocio es muy probable que sea compatible, si por el contrario hemos insertado código de presentación, o APIs de Windows estas funciones obviamente no se encontrarán en el Compact Framework.

_ Utilizar una Base de Datos. Podremos agregar una referencia a un servidor de Base de Datos remoto como lo haríamos desde una aplicación Windows o Web (al que conectaríamos de forma transparente vía WIFI/GPRS/3G, etc.) o a una versión de SQL CE instalada en el dispositivo móvil. Esta versión de SQL soporta hasta 2Gb de BDs en el dispositivo y la funcionalidad necesaria para programar aplicaciones móviles. La sincronización con una BD central de SQL Server podremos hacerla manualmente o dejar al motor que la realice vía HTTP (de nuevo de forma transparente sobre WIFI/GPRS/3G u otras conexiones que tengamos en el dispositivo).

_ Llamar a un Web Service. Podremos agregar una referencia Web para hacer una llamada a un Web Service vía HTTP de forma transparente. De esta forma tendríamos un cliente ligero en el dispositivo con la Interfaz de Usuario y nos conectaríamos a nuestro sistema vía HTTP por Servicios Web.

_ Utilizar los servicios y hardware del dispositivo. Tenemos multitud de posibilidades “bajo” nuestro código, desde la cámara, Bluetooth, dispositivos GPS, mensajería SMS, etc.

Eso son solo algunas de las opciones que me vienen a la cabeza, pero obviamente las posibilidades son ilimitadas con todo el .NET Compact Framework debajo. La cantidad de dispositivos son enormes, desde Windows CE hasta SmartPhones pasando por PDAs, así que las posibilidades son infinitas.

¡Os animo a que “juguéis” un rato!

Jose Murillo Responsable de Programas Técnicos para Partners. División de Desarrolladores y Plataforma Microsoft.

Etiquetas

Noticias relacionadas

Comentarios

No hay comentarios.

Deja un comentario

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

Debes haber iniciado sesión para comentar una noticia.