martes, 30 de marzo de 2010

¿Aplicaciones conectadas o desconectadas?

Cuando empezamos a pensar en el desarrollo de una aplicación móvil, una de las primeras decisiones que se deben tomar es la arquitectura para la cual vamos a desarrollar nuestra aplicación.


Aplicaciones locales al dispositivo. Para poder generar este tipo de aplicaciones GeneXus utiliza el Compact Framework, distribuido por Microsoft para poder ejecutar aplicaciones .NET en dispositivos móviles.

Estas aplicaciones tienen una interfaz estilo Windows y almacenan los datos localmente en la base de datos SQL Server CE (motor de base de datos para PocketPC). Para poblar de datos estas bases o pasar la información generada existen diferentes mecanismos de sincronización como webservices, data views, etc.

Para poder generar una aplicación .NET Mobile con GeneXus hay que tener en cuenta una serie de requerimientos simples, estos son: Active Sync y Windows Mobile SDK for Pocket PC para el caso que se tenga instalado Microsoft Visual Studio. Mi consejo es utilizarlo con Visual Studio instalado ya que además de brindar ciertas ventajas ofrece una serie de herramientas muy útiles que facilitan el trabajo. Además se cuenta con una serie de emuladores lo que hace que no sea necesario contar con un dispositivo para realizar el desarrollo.

Si no se cuenta con Visual Studio existen una serie de limitaciones no muy grandes y se agregan algunos ítems a los requerimientos. Mas info 

Aplicaciones conectadas o full web, estas son aplicaciones web como cualquier otra que hayamos desarrollado utilizando GeneXus.

A partir de GeneXus Evolution 1, el desarrollo de aplicaciones web mobile ha sido mejorado cambiando la forma en que las páginas web, estilos, y java scripts son generados cuando la aplicación es mostrada en los dispositivos móviles.

Esta versión de GeneXus brinda además la posibilidad de utilizar el Work With Pattern, para que el mismo pueda ser visto desde un dispositivo móvil, en la instancia del pattern debemos chequear que la propiedad "GenerateForSmartDevices" este en true.

Además se ha agregado el valor AppMasterSD a la property Master page de los web panels creada para: nos permiten tener un diseño consistente, para aplicaciones web mobile existe el tipo.

Finalmente a la hora de probar nuestra aplicación podemos acceder directamente al localhost desde nuestro dispositivo móvil de manera sencilla por lo que resulta muy fácil testear la aplicación


La elección entre una de estas dos arquitecturas debe estar basada en el uso que se le piensa dar a la aplicación. Debemos pensar entonces en las siguientes variables: conectividad, tiempos de ejecución y trafico de información.

Conectividad: si se piensa en una aplicación conectada, se debe estar seguro que se tendrá acceso el 100% del tiempo. En general las aplicaciones conectadas se utilizan dentro de depósitos donde esta variable se puede controlar.

Tiempos de ejecución y tráfico de información: una aplicación local siempre será más rápida que una a la que se aceda vía web además para trabajar no necesita enviar ni recibir información. Si a esto le sumamos el envió de un gran volumen de información puede resultar en que nuestra aplicación web mobile sea inutilizable.

En las aplicaciones locales se pueden desarrollar mecanismos para sincronizar con la base de datos central en nuestra empresa cuando se tenga conectividad mientras todo quedara almacenado localmente.


Mantenimiento de la aplicación
Por último resta hablar del mantenimiento de la aplicación, en ambos casos es muy fácil y no tiene complicaciones. Con respecto a la web basta con actualizar el server los cambios realizados.

En las aplicaciones locales es un poco diferente. Lo que se debe hacer es generar el cab y publicarlo luego basta con enviar vía mail o sms la url a cada dispositivo donde este quedo publicado, luego de descargado el cab con un clic se instala solo en el dispositivo.