martes, 8 de abril de 2008

Introduccion a Flex Data Services 2 (Live Cycle Data Services)

Nota: Actualmente Flex Data Services ha cambiado su nombre por Live Cycle Data Services

¿Qué es Flex Data Services 2?¿Para que sirve?¿Qué nos aporta?. Estas y otras muchas preguntas seguro que han pasado por la cabeza de aquellas personas fascinadas por las nuevas posibilidades que aporta Flex 2. En este artículo intentaremos dar respuesta a muchas de ellas.

Quizá FDS2 sea la pieza más valorada para aquellos que llevamos años aprendiendo a dominar el arte de la creación de aplicaciones RIA(Rich Internet Applications) debido a que resuelve muchos de los problemas que hemos ido encontrando por el camino y que hemos sufrido durante años. FDS2 aporta un workflow realmente sencillo y fácil de manejar a la hora de abordar un proyecto RIA. ¿Es posible crear RIAs sin FDS2? La respuesta es que si, pero las posibilidades del producto final no serán las mismas sin esta pieza del rompecabezas. Digamos que el grado de "riqueza" de nuestro software no será el mismo, ya que añade servicios y características directamente a nuestro producto sin necesidad de hacer practicamente nada. Por tanto, la sencillez que aporta FDS2 significa productividad y menores tiempos de desarrollo. Algo que puede ser muy significativo a la hora de planificar el coste de un proyecto. Al fin y al cabo La productividad es ahorro de dinero, y este es un lenguaje que todo responsable de un departamento de TI entiende a la perfección.

1. ¿Que es FDS2 y para que sirve?
2. RemoteObjects
3. Flex Message Service
4. Flex Data Management Service
5. Resumiendo
6. Licencias

¿Que es FDS2 y para que sirve?

Flex Data Services 2 es básicamente una aplicación Web Java (para que nos entendamos, un .war) bastante avanzada, que se instala y ejecuta en un servidor de aplicaciones (como pueden ser JOnAS, JBoss o WebLogic) como cualquier otra aplicación web. También puede funcionar en un contenedor de Servlets como Tomcat, aunque para hacer funcionar todas las características, como los Data Management Services, es necesario instalar JOTM. FDS2 es la capa intermedia que actua a modo de pegamento entre los clientes Flex y los sistemas de backend a los que seguramente tendremos que acceder en nuestras soluciones RIA(tales como LDAP, RDBMS, Sistemas de ficheros, Servidores de correo, etc...), exponiendo dichos sistemas mediante una arquitectura SOA pura.



Flex Data Services 2 - Arquitectura J2EE


Esta aplicación web nos aisla de muchos de los problemas de integración que surgen al construir Rich Internet Applications y aporta las siguientes características:

* Remote Objects: Ofrecen la capacidad de hablar con clases java directamente mediante el nuevo protocolo AMF3. Esta es la parte menos novedosa ya que se trata de la evolución del antiguo Flash Remoting. Es decir, programación orientada a llamadas remotas (RPCs).
* Flex Message Service: La arquitectura de FDS2 está orientada al mensaje y combinada con el potencial del protocolo RTMP (Real Time Message Protocol) para comunicaciones en tiempo real. Esto nos permite hacer aplicaciones de colaboración en tiempo real y "data push" a todos los clientes Flex conectados.
* Flex Data Management Service: Introduce en las RIAs la "programación orientada a datos" y la persistencia de estos en tiempo real incluso a nivel de cliente. FDMS está diseñado para que los componentes se comuniquen de forma directa con el servidor realizando las tareas CRUD más básicas (y otras más complejas como paginación, relución de conflictos,etc...) sin que nosotros tengamos que programar prácticamente nada y con la ventaja añadida del refresco de datos en todos los clientes Flex en tiempo real.

Después de años de experiencia diseñando software para construir RIAs, Adobe ha sabido crear un producto que no solo aporta nuevas posibilidades inovadoras (como la posibilidad de hacer "push" de datos al cliente o la orientación a datos), si no que simplifica las ya existentes haciendonos la vida más fácil a los que trabajamos día a día con la tecnología.

Veamos cada una de las características con más detenimiento...
RemoteObjects

Los RemoteObjects (ROs) son uno de los tres tipos de comunicación RPC en Flex. Los otros dos tipos son los componentes HTTPService (get, post y xml sobre HTTP) y WebService (servicios web basados en SOAP), los cuales forman parte del SDK gratis de Flex 2 y no necesitan de FDS2.

Hasta que salió FDS2, Los ROs eran la mejor forma de integración con el servidor. De hecho es la forma que utilizan las RIAs más actuales basadas en Flash o Flex debido a que permite hablar directamente con clases o servicios Java y pasar jerarquias de objetos entre capas (mapeo de clases AS3-Java). Gracias al protocolo AMF (ActionScript Message Format), el desarrollador puede abstraerse de la serialización y deserialización tanto en cliente como en servidor enfocandose en resolver el problema de negocio que tenga entre manos.

Un punto fundamental del exito de los ROs, sobre los Web Services basados en SOAP, es el rendimiento que ofrecen debido a que la capa de transporte está muy optimizada ya que AMF es un protocolo binario en contraposición al formato textual de un mensaje SOAP. Esto se hace evidente cuando el volumen de datos es elevado y donde AMF no tiene competencia. Por último FDS2 soporta el nuevo AMF3 cuyo rendimiento y capacidades son superiores al antiguo AMF0 usado en productos más antiguos como Flash Remoting, OpenAMF o AMFPHP.

Hasta aqui no hay nada que no conociesemos de otras versiones de Flash lo interesante o novedos comienza a partir de aquí...
Flex Message Service

El servicio de mensajería de Flex es el corazón del nuevo FDS2 y permite crear una nueva generación de RIAs colaborativas que intercambian datos en tiempo real (el ejemplo más básico sería una aplicación de chat). Gracias a la nueva arquitectura de publicación-subscripción orientada al mensaje los datos fluyen entre cliente y servidor permitiendo actualizar todos los clientes conectados mediante "push" de datos a dichos clientes (es decir la comunicación se realiza desde el servidor al cliente, al contrario de como estamos acostumbrados).



Flex Message Service - Publicación - Subscripción

El "push" de datos al cliente es posible gracias al protocolo RTMP (Real Time Message Protocol) conocido por muchos gracias a otros productos de Adobe como Flash Media Server 2. La diferencia entre FDS2 y FMS2 es que el primero solo permite usar RTMP para enviar datos, mientras que las capacidades del segundo se amplian al streaming de audio y video.

Las nuevas funciones de mensajería nos permiten enviar los datos através de "canales" basados en protocolos (como AMF o RTMP) capaces de formatear los mensajes en diferentes formas y sabores según nuestras necesidades (quizá queramos mensajes encriptados para comunicaciones seguras o tal vez mensajes "por sondeo"(polling) en vez de mensajes "push" desde el servidor.

A su vez podemos usar adaptadores (JMS, ActionSCript,...) que permiten que estos mensajes interaccionen con diferentes clientes, como por ejemplo, otras aplicaciones Flex o incluso aplicaciones Java (Swing, AWT,...) que usen JMS.


FDS2 - Arquitectura del Bus de Mensajería

Como podeis comprobar FDS2 tiene un diseño altamente desacoplado, donde cada pieza se conecta con las restantes formando un sistema realmente flexible y extendible gracias a la compenetración e interacción de las APIs de cliente y servidor. Toda la configuración de FDS2 descansa sobre ficheros XML bien estructurados que permiten tener un acceso fino a montones de características (opciones de seguridad, proxys, etc...).
Flex Data Management Service

Si FMS es una pasada, no os perdais FDMS que hace del desarrollo de soluciones software un paseo. FDMS se basa en todo lo visto anteriormente y básicamente permite crear aplicaciones "orientadas a datos" en vez de "orientadas a llamadas remotas(o RPCs)". Como era de esperar en este caso también disponemos de canales(channels) y adaptadores(adapters). En FDMS, los adaptadores definen la persistencia de los datos o como estos serán modificados (normalmente usando un gestor RDBMS aunque también podría ser una máquina remota, un sistema de ficheros). Los adaptadores que vienen por defecto son: "actionscript" (que mantiene los datos en memoria y suele tener un uso en escenarios simples), y "java-dao" (que es el usado por defecto, normalmente con una base de datos). También se incluye un adaptador para Hibernate (paquete que viene de serie en la instalación.

Si hasta ahora teniamos distintas soluciones de persistencia en el backend y middleware, FDMS extiende estas capacidades al cliente, de forma que siempre tenemos los datos sincronizados en todas las capas y en definitiva en todos los clientes Flex conectados. Lo mejor de todo es que las tareas CRUD están sistematizadas gracias a la interacción de los componentes de cliente y servidor junto con algunos XMLs de configuración. Esto hace que nosotros solo tengamos que añadir funcionalidades adicionales para completar los casos de uso que se nos presenten.


FDMS - Arquitectura de Flex Data Magement Service

Además FDMS dispone de otras muchas funcionalidades avanzadas:

* Paginación: Podemos configurar el tamaño del conjunto de datos que pidamos, de forma que FDMS se encarga de enviar automáticamente la porción de datos apropiada en cada momento según operemos con los componentes en cliente.
* Resolución de conflictos: Estos se generan cuando dos o mas usuarios están editando los mismos datos simultaneamente. FDMS nos permite decidir que hacer en estas situaciones.
* Relación de datos anidados: Es decir la gestión automática de relaciones "1 a 1", "1 a muchos" y "muchos a muchos". Se definen en el fichero de configuración XML del servidor y FDMS se encarga de todo...

Resumiendo

Si juntamos lo descrito aqui a las otras muchas posibilidades que aportan Flex 2 y el Flash Player 9 (como DataBinding o E4X), tenemos ante nosotros una tecnología realmente innovadora que une unas capacidades gráficas, de video y audio sin competencia hoy en día en el mercado. El tratamiento de los datos y su ubicuidad amplía el concepto de RIA que teníamos abarcando el intercambio de datos con el servidor. La simpleza en el desarrollo es otro factor decisivo a la hora de evaluar este producto, ya que Flex 2 está creado bajo la filosofía EoD (Ease of Development o facilidad de desarrollo).
Licencias

Lo mejor de todo es que hay diferentes versiones de FDS2 para todo tipo de escenarios. Desde una versión grátis (FDS2 Express) con toda la funcionalidad pero pensada para entornos de menor tráfico de datos, versiónes departamentales para un mayor número de usuarios y versiones empresariales donde la alta disponibilidad y la replicación es importante debido al alto número de transacciones y usuarios accediendo a nuestras aplicaciones Flex.

Por tanto, ya no hay excusa para no empezar a crear RIAs con FDS2 y Flex 2. ¿No os parece?.

Fte: http://www.madeinflex.com/2006/10/11/introduccion-a-flex-data-services-2/

No hay comentarios:

Publicar un comentario