Existen varios tipos de diseños de arquitectura para las soluciones móviles, enumeraré las tres más importantes y conocidas:
1) WAP (Wireless Application Protocol). Corresponde a una de las primeras formas de desarrollo de aplicaciones móviles basadas en telefonía celular. Básicamente se trata de un subconjunto de instrucciones HTML, conocido como WML que es interpretado por un browser bastante rudimentario que corre sobre el dispositivo celular. Se justificaba inicialmente, ya que los anchos de banda y la circuitería de los equipos no permitían soluciones más potentes, pero actualmente está francamente en desuso. Sus principales problemas eran lo básico de su interfase (similar a una pantalla de texto pequeña) y a que nunca existió un real standard al respecto, existiendo algunos problemas en su ejecución, según la marca y tipo de navegador en los celulares. Por otra parte, requería de un gateway especial que encarecía bastante la solución.
2) J2ME (Java 2 Mobile Edition). Tal como existe una especificación Java Standard (J2SE) y una empresarial (J2EE), se creó una versión de este lenguaje para dispositivos móviles. Está bastante extendida, ya que actualmente los procesadores y memorias de los aparatos permiten la ejecución de este tipo de programas. Mayormente se ha utilizado para aplicaciones que no requieren mayor conectividad, como juegos, agendas y cosas similares. Para cualquier desarrollador Java es conocido que pese a existir una especificación aceptada en la industria para el lenguaje de programación, la ejecución de este código en diferentes JVM puede producir resultados bastante diferentes. En los celulares no es diferente, razón por lo que uno de los problemas de esta plataforma es que siempre debe tenerse muy presente el tipo de máquina en que correrá. Otro problema es que en su especificación el manejo de dispositivos es bastante complejo, así como las herramientas de integración. Estas últimas son parte principalmente de J2EE, por lo que hay que ser bastante ingenioso y experimentado para lograr buenas integraciones desde esta plataforma.
3) WEB mobile. La irrupción del aumento del ancho de banda inalámbrico (principalmente EDGE), ha permitido que se pueda navegar en Internet desde un celular con tiempos de respuesta y costos razonables. Sin embargo, aún está pendiente un mayor desarrollo de los navegadores de las máquinas, siendo actualmente habitual tener serios problemas con la ejecución de scripts, el manejo de certificados y las resoluciones de las pantallas. Esta es una solución muy utilizada en la actualidad para desarrollar aplicaciones móviles de negocio, por no requerir de un esfuerzo adicional al ya requerido para el desarrollo web. Sin embargo, no soluciona muchas de las problemáticas mencionadas en mi post anterior, así como sub utiliza la potencia total de los dispositivos.
En términos generales, las soluciones móviles actuales adscriben a alguna de estas arquitecturas, sobre todo a las dos últimas. Esto aplica tanto a aparatos celulares como a dispositivos celulares. Se que a esta altura todos habrán saltado porque no puse .net mobile, pero la verdad es que esta herramienta es utilizada en menor medida que las anteriores, por cuanto tiene la limitante de solo correr en aparatos con Windows CE o Windows Mobile, como las PPC. A mi me parece que es una plataforma bastante poderosa, pero al tener esa gran limitante está lejos de posicionarse como una alternativa fuerte en el mercado, más aún con el auge que está teniendo el Open Source.
Hasta acá, hemos mencionado algunas alternativas de solución utilizadas, pero si se fijan bien encontrarán que hay cabos sueltos, tales como:
Todas estas opciones son variaciones de otras de corte más tradicional (WAP-WEB, J2ME-J2SE, etc.), heredando muchas de sus virtudes, pero también muchos de sus problemas y complejidades.
Todas ellas dan cuenta de formas de desarrollar aplicaciones para LOS CLIENTES, pero ninguna está centrada en solucionar el ciclo completo, es decir, la capa servidora, la integración, las comunicaciones, etc).
En definitiva, si necesito desarrollar un sistema que me permita exponer mis procesos de negocios a los ejecutivos para que puedan interactuar con ellos desde sus dispositivos móviles lo más probable es que desarrollar la aplicación cliente sea una de las labores más sencillas, quedando pendiente todo el resto de los elementos. Bueno, justamente este es el elemento central de la solución desarrollada por RIM, las BlackBerries.
Hay que partir aclarando que esta no es una plataforma o un tipo de lenguaje de programación, es una arquitectura que da cuenta de la problemática completa, que incluye la capa servidora, las comunicaciones y las aplicaciones clientes. Las BlackBerries también pueden trabajar como cualquier celular en las modalidades que mencioné anteriormente, pero no es hasta que se implementan como solución corporativa que demuestran su real potencialidad.
En primer lugar, existen dos formatos de la arquitectura: BIS y BES. El primero de ellos corresponde a un tipo de solución parecido a una solución Java tradicional. Este es el esquema de ella:

Los dispositivos trabajan permanentemente en formato EDGE con buenos anchos de banda (se debe tener un contrato con la compañía respectiva para el tráfico de datos). En Chile he llegado a medir casi un mega, según la calidad de la señal. Cuando se compran o arriendan, se deben configurar para que trabajen contra un servidor del carrier con que contratamos. Este servidor es un GateWay o APN, que permite al aparato tener acceso full a Internet y, a través de ella, acceso a los servicios que tengamos publicados, como por ejemplo el mail.
La segunda modalidad es donde radica la mayor potencialidad de esta solución. El esquema de arquitectura es el siguiente:

La primera diferencia está en que el dispositivo interactúa inicialmente con un Gateway de RIM, el fabricante. Esto aplica a todos los aparatos repartidos por el mundo, estén donde estén. Este servidor está interconectado con otra máquina propiedad del cliente, el BES (BlackBerry Enterprise Server), el que a su vez está en la misma red que los servidores de nuestra compañía. Algunas de las características y consecuencias directas de este modelo son las siguientes:
1) La comunicación completa, desde el aparato hasta la red del usuario, es por defecto totalmente encriptada y segura.
2) El BES permite un control completo sobre las transmisiones y usos de cada uno de los dispositivos registrados en el.
3) El BES al estar en el dominio de red de la compañía, permite al usuario BB el acceso a los recursos de red, como si se tratara de una WAN. Obviamente, estamos hablando de los recursos accesibles desde un teléfono, tales como los servicios web, ftp, etc.
4) A través del BES podemos publicar hacia el dispositivo datos y aplicaciones mediante sus servicios. Esto es absolutamente consistente con una arquitectura SOA integrada con dispositivos móviles.
Hasta ahora no he mencionado en ningún momento el desarrollo de aplicaciones cliente para las soluciones corporativas. Bueno, en el caso de BIS, se pueden desarrollar en JAVA, como en cualquier teléfono con esta plataforma habilitada. Un ejemplo lo pueden ver en una solución desarrollada por nosotros, en conjunto con MapCity.com: http://www.mapcity.com/bb/
En el caso de una arquitectura BES, esto es diferente. La herramienta de desarrollo de aplicaciones es MDS (BlackBerry Mobile Data System). En realidad MDS es un framework completo, que permite el desarrollo de las aplicaciones, la administración de estas y de los dispositivos, manejo de la seguridad, etc. En lo referido al desarrollo, es interesante mencionar que se realiza en un ambiente gráfico y es automáticamente distribuida a los aparatos deseados, sin ningún proceso manual de instalación. Las aplicaciones obtenidas son de una calidad gráfica aceptable, con una interfaz similar a la de una aplicación Web sencilla. Ahora, pensemos en el flujo completo de la solución para que veamos su potencialidad, suponiendo que se trata de una aplicación de captura de datos en terreno. Por ejemplo, datos metereológicos (este corresponde a un caso real de solución):
1) El desarrollador genera la aplicación con MDS, incorporando todos los controles y objetos gráficos necesarios para su operación.
2) La aplicación se instala automáticamente el los aparatos de los operarios deseados.
3) Estas personas la ejecutan.
4) La aplicación captura las coordenadas geográficas obtenidas por el GPS del aparato (BB 8800) y la almacenan localmente.
5) El operario comienza a registrar las variables ambientales desde las estaciones correspondientes y las tipea en su celular (temperatura, humedad, etc).
6) Los datos se transmiten en protocolo seguro hasta el BES central de la empresa, el que los inyecta en las bases de datos inmediatamente.
7) Los datos recién capturados están disponibles de inmediato para los analistas situados en la capital, o vía BB.
Es verdad que de una u otra manera todo esto se puede conseguir de otras formas, pero la facilidad y rapidez de los resultados logrados es tremendamente superior a otras plataformas.
Ahora, ¿qué pasa con Genexus?. Bueno, todos sabemos que Genexus no genera J2ME ni MDS, por lo que no podemos pensar en desarrollar aplicaciones para ser ejecutadas directamente por una BB. Sin embargo, tanto esta como las demás alternativas requieren de un poderoso set de servicios asociados, los que pueden ser perfectamente desarrollados con Genexus. En este sentido, nuestra experiencia nos indica que las herramientas de Genexus que potencian las características de backend son tremendamente valiosas a la hora de enfrentar este tipo de proyectos y las iniciativas SOA en general. Las features como los business components, SDT y otros, permiten desarrollar rápida y fácilmente los servicios necesarios para poder hacer interactuar las BB con nuestras aplicaciones, vía BES.
A manera informativa, les cuento algunas otras gracias de la arquitectura BES y BB en general:
Es posible trabajar en modalidad “Push”, en la que se envía desde el BES requerimientos a los dispositivos para tareas específicas. Por ejemplo, la actualización en línea de una aplicación, sincronización de los relojes, cambios de configuración, bloqueos, etc.
Hay absoluta compatibilidad en las diferentes versiones de HDW. Si se cambia un aparato por uno más moderno o con características diferentes, las aplicaciones continuarán trabajando correctamente. Esto baja tremendamente la obsolescencia de las soluciones.
Es posible trabajar en forma “stand alone” con las aplicaciones en caso de no tener señal y posteriormente, enviar a proceso los datos.
Existen varios modelos de máquinas, destinados para ambientes de trabajo diferentes.
Se pueden encontrar múltiples accesorios destinados a trabajar en soluciones de nicho. Por ejemplo, impresoras, lectores de códigos de barra, etc.
Espero haber aportado en algo al conocimiento de esta tecnología, al menos a las personas que se tomaron la molestia de contactarme. Si alguien quiere iterar un poco más, no tiene más que mandarme un correo a alvaro@gici.cl
En este punto comenzamos a ver un poco más de detalle. Estas famosas cajitas la mayoría de las veces requieren interactuar con uno o más servicios, por lo que deberemos especificar en este punto la interfaz y datos que intercambiaremos. No entraré en el detalle de la manera técnica en que esto se hace, pero es fundamental tener claro el set de datos que se inyectará a cada servicio y la información que estos retornarán; es algo muy parecido a lo que se suele hacer en un motor de Workflow. Otros elementos que se deben indicar en esta etapa son las transformaciones que irán sufriendo los datos a medida que el proceso avanza y se van ejecutando los diversos servicios involucrados. Esto puede parecer bastante sencillo, pero habitualmente las principales dificultades en el diseño se dan en el manejo de las integraciones con los servicios y en lo complicado de llegar al nivel de detalle necesario para lograr una implementación eficiente.