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

ProgramaciA?n para dispositivos mA?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 visiA?n

Hace ya varios aA�os que Microsoft disponA�a de entornos especA�ficos para la programaciA?n de dispositivos mA?viles (sistemas empotrados, PDAs, smartphones, etc.). Se trataba de entornos particulares, exclusivamente para este tipo de programaciA?n y que requerA�an de perfiles de desarrolladores muy concretos y especializados. En ese momento se buscaban desarrolladores para a�?Windows Embebed Toolsa�?, nuestro entorno de programaciA?n para dispositivos.

Esto no solo ocurrA�a con los dispositivos mA?viles, tenA�amos entornos especializados para la programaciA?n de aplicaciones Web, integraciA?n para office, etc.
Obviamente esto representaba un problema, y era que cada programador o diseA�ador de software debA�a tener un perfil especA�fico por tipos de aplicaciones, Web, mA?viles, office, etc. No solo era un problema para los propios programadores que debA�an conocer mA?ltiples SDKs y sobre todo entornos diferentes, sino sobre todo para las empresas, que no podA�an reutilizar a sus desarrolladores en diferentes tipos de proyectos.

Otro problema que suponA�a este paradigma de programaciA?n es que a menudo aplicaciones muy similares para diferentes entornos (Web, rico, mA?viles) o ya incluso para diferentes versiones de los dispositivos mA?viles (Windows CE) requerA�an ser codificadas por separado, pudiA�ndose reutilizar poco cA?digo entre todas ellas.

Y aquA� es donde entrA? en juego .NET. Hace ya varios aA�os de eso, recuerdo incluso la primera vez que oA� hablar del .NET Framework allA? por el aA�o 1.999 en el TechEd de A?msterdam como cliente de Microsoft. Ha llovido mucho desde entonces y ya podemos hablar de una plataforma madura, en nA?meros absolutos la plataforma de desarrollo mA?s utilizada en Estados Unidos (mercado de referencia), pero sobre todo tambiA�n en EspaA�a, nuestro mercado.

.NET tenA�a justamente esta visiA?n, un entorno de desarrollo A?nico, independientemente del tipo de aplicaciA?n (rica, Web, mA?vil, etc.) y que permitiese poder ejecutar el mismo cA?digo en diferentes dispositivos.

Para ello se diseA�A? el .NET Framework, una capa de abstracciA?n entre el hardware del dispositivo y el cA?digo fuente, que permitA�a aislar al programador del tipo de hardware y sistema para el que se codificaba en la mayor medida de lo posible. Toda aplicaciA?n .NET requiere por lo tanto este framework instalado en la mA?quina. Un framework que en muchos casos ya viene con el sistema operativo o, que en caso contrario, puede descargarse de forma rA?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 CA?digo Intermedio (IL Code). Este es el cA?digo que se compila en tiempo real por el .NET Framework y luego es ejecutado en A?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 dA�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 A?nico para todo tipo de aplicaciones, el siguiente paso ha sido un entorno A?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 artA�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 mA?dulo que permite la conexiA?n desde un PC con un dispositivo mA?vil y puede descargarse de forma gratuita desde la Web.

Todo el desarrollo que hagamos para dispositivos mA?viles necesita obviamente un dispositivo sobre el que poder probarlo. En este punto podemos usar un dispositivo fA�sico conectado al PC a travA�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 tecnologA�a de virtualizaciA?n y contienen una imagen binaria del Sistema Operativo original, con lo cual la compatibilidad con el dispositivo fA�sico real es del 100%.

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

En este artA�culo trabajaremos con la versiA?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 deberA�a ser otro mA?s que el ya clA?sico a�?Hola, Mundo!a�?, al menos para este primer ejemplo.
<doc213|left>
Abrimos Visual Studio y en a�?Fichero/Nuevo/Proyectoa�? escogemos por ejemplo la opciA?n a�?Windows Mobile 5.0 Smartphone/Device Applicationa�?, es indiferente que lo hagamos en el lenguaje Visual Basic o C#, esto lo dejo a elecciA?n del lector.
Tras elegir un nombre veremos como se crea el proyecto y aparece la Pantalla 1 en nuestro entorno de desarrollo.

A?CuA?l es la diferencia para un programador que ya haya usado Visual Studio para otro tipo de aplicaciones? Pues prA?cticamente ninguna. Mejor todavA�a, ahora su a�?superficie de dibujoa�? es un smartphone, pero su paleta de herramientas sigue estando ahA�, las propiedades, depuraciA?n, etc. Es el mismo modelo de programaciA?n.

Vamos con un primer ejemplo: Arrastramos un control Label al que ponemos a�?Hola, Mundo!a�? en su propiedad a�?Texta�? y pulsamos sobre la barra de menA? azul de abajo en la pantalla del dispositivo para configurar un menA? bA?sico. Incluimos una opciA?n a�?Holaa�? en el menA? izquierdo y otra a�?Salira�? en el menA? derecho.<doc214|right>

La pantalla nos deberA�a quedar algo parecido a la Pantalla 2.

Haciendo doble click en estas opciones tendremos acceso al cA?digo fuente que hay detrA?s. Este debe quedar como en la Pantalla 3.


private void menuItem1_Click(object sender, EventArgs e)

label1.Text = a�?Hola!!a�?;

private void menuItem2_Click(object sender, EventArgs e)

Close();

Pulsemos ahora Ctrl+F5 para ejecutar la aplicaciA?n (o bajo el menA? Build). Fijaos que sale una pantalla preguntando que donde queremos ejecutar la aplicaciA?n (Pantalla 4).

<doc215|left>AquA� tenemos la opciA?n de escoger un dispositivo real conectado al PC (la primera opciA?n) o uno de los emuladores ofrecidos. Si escogemos la segunda opciA?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 aplicaciA?n y se ejecuta (Pantalla 5).

Cuando cerremos el emulador podrA�is ver como pregunta si deseamos salvar el estado. Recordad que es una mA?quina virtual, asA� que podremos salvar dicho estado para no tener que partir de una mA?quina a�?nuevaa�? en cada ejecuciA?n y por lo tanto tener que desplegar al dispositivo el .NET Compact Framework.<doc216|right>
Un detalle, recordad tambiA�n cerrar la aplicaciA?n antes de salvar la mA?quina, de lo contrario la siguiente vez que querA?is ejecutarla Visual Studio la encontrarA? arrancada y no podrA? desplegar la nueva versiA?n.

DepuraciA?n Integrada

Veamos ahora cA?mo depurar este tipo de soluciones. Para ello pongamos un breakpoint en el cA?digo que se ejecuta al pulsar el botA?n a�?Holaa�? haciendo clic con el ratA?n donde aparece el punto rojo en la Pantalla 6.

Una vez definido el breakpoint ejecutemos con F5 para entrar en depuraciA?n (o el menA? Build) y cuando se haya arrancado el emulador pulsemos sobre el botA?n a�?Holaa�?, para ello tenemos que hacer clic sobre el que serA�a el botA?n hardware del dispositivo que estA? un poco mA?s abajo de la pantalla, recordad que en este caso es un smartphone y la pantalla NO es tA?ctil.

<doc213|center>
Inmediatamente despuA�s de pulsar la opciA?n podrA�is comprobar como Visual Studio se detiene sobre la lA�nea del breakpoint permitiA�ndonos depurar la aplicaciA?n como si de otra cualquiera se tratase. El funcionamiento y la experiencia es exactamente la misma sobre un dispositivo fA�sico conectado al PC por USB o Bluetooth.

Dejad corred vuestra imaginaciA?n

Ya hemos visto los fundamentos bA?sicos de programaciA?n de dispositivos mA?viles con Visual Studio. Una vez tengA?is el Interfaz de Usuario creado arrastrando algunos controles de la barra de herramientas podrA�is:

_ Utilizar componentes de negocio que ya tengA?is escritos en .NET simplemente agregando la referencia en el proyecto. Si tenemos ya una aplicaciA?n 3 capas con un buen diseA�o donde la lA?gica de negocio son librerA�as de componentes con cA?digo de negocio exclusivamente (cA?lculos, acceso a BDs, etc.) podremos utilizar dicho assembly en el dispositivo. Tened en cuenta que el dispositivo ejecuta un subconjunto del framework, asA� que siempre y cuando el cA?digo que contenga estA� soportado podrA? funcionar sin cambios. Si este cA?digo solo contiene LA?gica de Negocio es muy probable que sea compatible, si por el contrario hemos insertado cA?digo de presentaciA?n, o APIs de Windows estas funciones obviamente no se encontrarA?n en el Compact Framework.

_ Utilizar una Base de Datos. Podremos agregar una referencia a un servidor de Base de Datos remoto como lo harA�amos desde una aplicaciA?n Windows o Web (al que conectarA�amos de forma transparente vA�a WIFI/GPRS/3G, etc.) o a una versiA?n de SQL CE instalada en el dispositivo mA?vil. Esta versiA?n de SQL soporta hasta 2Gb de BDs en el dispositivo y la funcionalidad necesaria para programar aplicaciones mA?viles. La sincronizaciA?n con una BD central de SQL Server podremos hacerla manualmente o dejar al motor que la realice vA�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 vA�a HTTP de forma transparente. De esta forma tendrA�amos un cliente ligero en el dispositivo con la Interfaz de Usuario y nos conectarA�amos a nuestro sistema vA�a HTTP por Servicios Web.

_ Utilizar los servicios y hardware del dispositivo. Tenemos multitud de posibilidades a�?bajoa�? nuestro cA?digo, desde la cA?mara, Bluetooth, dispositivos GPS, mensajerA�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, asA� que las posibilidades son infinitas.

A?Os animo a que a�?juguA�isa�? un rato!

Jose Murillo Responsable de Programas TA�cnicos para Partners. DivisiA?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.