Introducción a Flex Data Services 2

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.


¿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
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
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
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
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?.

33 Comentarios

  1. Carlos Rovira

    Gracias Edgar :),

    Espero que sea así y que la gente deje de pensar que este producto solo existe en versión de pago. Y hacer notar que la versión gratis puede ser muy funcional y valida en muchos entornos. Creo que la segmentación del producto está muy bien pensada.

  2. Huge

    Un trabajo magnifico!!!!

    Un articulo que buscaba como loco para centrarme un poquito…, Felicidades!!! y Gracias!!.

    Saludos

  3. Pingback: MadeInFlex » Blog Archive » Introducción a Web Services con .NET y FLEX

  4. Sergio Montesa

    Llevo un tiempo desarrollando aplicaciones J2EE con JSF+Facelets en la capa Vista y JPA+Hibernate en la capa Modelo, creando mis Beans, mis DAO y mis ValueObject a mano (mejor dicho con la ayuda de Eclipse).

    El problema es que mis clientes me piden/exigen un interface más rica e interactiva… y aquí es donde quiero empezar a utilizar Flex.

    ¿Podré aprovechar el código Java de mis proyectos asociados al Negocio (entiendo que no a la Vista con mis JSF) y recodificar la vista con Flex? ¿Entiendo que FDS2 es absolutamente necesario para ello?

    ¿Alguna alternativa a FDS2 OpenSource y para proyectos de misión crítica?

  5. Carlos Rovira

    @sergio: Puedes aprovechar parte del código java dependiendo del empeño que hayas puesto en separar la lógica de negocio de la vista. En principio, es posible cambiar un frontend clásico a uno RIA/Flex, aunque es normal que tengas que adaptar algunas cosas.

    FDS2 (ahora LCDS) no es necesario pero si que te ahorrará muchos dolores de cabeza.

    Otras soluciones open source son: Red5, Granite Data Services, y existen todavía más, pero considero que son proyectos que tienen sus más y sus menos llegado el momento de emplearlos en proyectos de misión crítica como pides.

  6. jorge

    Soy nuevo con el uso de Flex, este articulo me ayuda a tener un mejor panorama, de este ambiente, una pregunta donde puedo bajar el (FDS expres) o en la version del flex esta integrado? yo tengo el Flex builder 2.
    Si alguien me puede ayudar a resolver esta duda, se lo agradecere mucho…… de antemano gracias.

  7. oc

    hice unas pruebas para manejar datos en tiempo real con flex y livecycle data services y funciona perfectamente, mi pregunta es si alguien a trabajado con flash y livecycle para hacer lo mismo

  8. gilberto ruano

    Saludo Carlos:
    Recién empiezo a conocer el mundo Flex y hay muchos conceptos que no domino. Para desarrollar aplicaciones centradas en datos puedo usar Flex y Derby, (Java database), y cómo haría el acceso la base de datos ?

    Gracias por sus indicaciones.

  9. Sergio Montesa

    Hola Gilberto,

    Ahora mismo mi conocimiento de FDS no es muy extenso, pero… aún así, yo te recomiendo que empieces pasando de “FDS” y creando Web Services (con JAVA, .NET o, en principio, con lo que quieras).

    Estos Web Services… que hagan el trabajo “duro” de acceso a la base de datos y luego puedes consumirlos desde FLEX directamente sin necesidad de instalar FDS.

    Te recuerdo que FDS es un producto de pago y no open source :cry: Ya sé que existe una versión gratis (o Express) pero limitada a una CPU (yo tengo clientes con 32 CPUs en sus máquinas y esto es un gran inconveniente) y no te la recomiendo -la Express- como opción para aplicaciones de misión crítica.

  10. Jam

    Buenas Noches a Todos.
    Llevo mis 3 primeros días metidos en Flex y tengo
    que reconocer que me he hecho un lio tremendo.
    Lo que realmente me interesa (pienso que a muchos
    tambien) es manejar bases de datos con seguridad y
    con el diseño que nos ofrece Flash.
    Asi que me gustaria formular unas preguntas a ver si
    con paciencia se nos puede contestar:
    1- Si flash cs3 puede utilizaz actionscript 3.0, queda justificado utilizar Flex ?
    2- Realmente que se necesita para “colgar” una aplicación Flex en un servidor? (con tanto php, .net, sql, fds2, coldfusion, y demas ya no entiendo nada) Si puede ser una explicación con sencillo y claro, mucho mejor
    3-Por ultimo para manejar unos 5000 registros con lectura y sobre todo escritura, ¿cual son las recomendaciones?
    Gracias y perdonar por este rollo, pero de verdad que estoy desamparado. Buenas Noches.

  11. Carlos Rovira

    @1: Totalmente, Flex es un framework que resuelve un montón de cosas que no existen por defecto en Flash. Los que hemos usado Flash desde siempre para hacer aplicaciones sabemos el gran valor de Flex ya que hemos sufrido su carencia en otras epocas :wink: .

    @2: Se necesita colgar tu SWF creado con flex (+htm, y javascript). En cuanto a la parte de logica de servidor, pues depende. Lo más sencillo es usar HTTPService con tu código de servidor. Luego tienes otras opciones mejores y más sofisticadas como son los RemoteObjects o los DataServices (para ello te hace falta por ejemplo LCDS en Java).

    @3: Mi recomendación es LCDS con Data Services. Es muy sencillo

  12. Jam

    Gracias Carlos.
    Por último y sin querer abusar de tu
    confianza. ¿Algún ejemplo, tutorial, link que explique
    LCDS con Data Service? Preferentemente en ES o FR.
    Gracias.

  13. Sergio Montesa

    Hola Jam,

    Yo llevo unas semanas desarrollando con Flex (estoy trabajando con Flex3 Beta) accediendo a bases de datos (Oracle y otras BdD) mediante el consumo (desde Flex) de Web Services (para ello no he necesitado instalar LCDS y me ahorro una “pasta”, de paso). Para el desarrollo de los Web Services utilizo Java (con el nuevo JAXWS es bastante sencillo) y tengo que decirte que es “mi combinación” perfecta.

    a) ¿Por qué Flex? Es una cuestión de gustos… podrías utilizar otras técnicas como AJAX (con GWT-ext, por ejemplo) o Ms Silverlight o Sun JavaFX. Pero FLEX no es comparable con Flash si lo que quieres es el desarrollo de aplicativos (similares a los que siempre se han podido diseñar con Visual Basic, por ejemplo).

    b) Quiero recordar que LCDS es realmente una aplicación web desarrollada en Java (vamos un WAR) y que por ello es necesario que dispongas de un servidor J2EE (Tomcat, JBoss, etc.) obligatoriamente. Esto resulta extraño si, por ejemplo, tu lógica de negocio está desarrollada en .NET (por ejemplo).

    c) Si desarrollas tu lógica de negocio como Web Services (en Java, en .Net o con cualquier otra técnica que conozcas)… los podrás consumir desde Flex fácilmente sin necesitar de ningún otro elemento adicional (lease LCDS).

    d) Yo estoy reaprovechando toda mi lógica de negocio que había desarrollado antiguamente (Web Services que utilizan JavaBeans que antes llamaba desde JSF y que ahora llamo directamente desde Flex) sustituyendo la “vista” que ya tenía desarrollada en JSF por FLEX (el desarrollo JSF es un poco “rollazo”). Aprovecho todo mi negocio y modelo (utilizando DAOs y JPA).

    e) Intentar diseñar un ejemplo en pocas líneas en un poco complicado, pero si lo consigo lo pongo en mi “blog”.

  14. jam

    Gracias.
    La teoria perfecta. Muchas Gracias.
    Ahora la practica.
    Saben de un pequeño ejemplo donde
    se vea todo esto y que funcione.
    Me refiero a una pequeña aplicación en Flex,
    con una pequeña base de datos y que se puedan
    dar altas, modificaciones y bajas de registro.
    Saludos.

  15. jam

    El ejemplo on-line, a parte de no verse muy bien los
    ejemplos era algo complicado y en cuanto al ejemplo practico:
    compila esto, agrega lo otro, exporta aquello, haz esta base de datos. En fin….
    Un “10″ para el tecnicos y un “0″ para el docente.
    Gracias de todas formas.

  16. Carlos Rovira

    vaya, siento que no te sean de ayuda…la gente que hacemos MIF, lo hacemos en nuestros ratos libres para ayudar. Siento que este recurso gratis no te sea de utilidad…;)

  17. GilbertoR

    Hola Jam:

    Cómo va con la descifrada de leer bases de datos desde Flex. Yo todavía no he podido hacerlo. Quiero accesar una base de datos Derby pero no encuentro aún la forma de hacerlo. Sospecho que dado que es la BD de Java debe haber una forma eficiente/fácil de hacerlo.

    Ya leí la teoría que viene en el help sobre DTP, que trae preciso un ejemplo con derby, pero no muestran como accesar la BD y mostrar los datos en un grid, por ejemplo.

    Cuéntanos cómo vas con el tema.

    Saludos

  18. Jam

    Hola GilbertoR,
    Con Wamp (Apache 2.2.4 – PHP 5.2.4 + PECL – Litemanager
    - MySQL 5.0.45 – Phpmyadmin) http://www.wampserver.com/download.php
    y Flex 3 beta 2.
    http://labs.adobe.com/technologies/flex/flexbuilder3/
    Conectar con una base de datos es bastante facil. No obstante llevo unos días conectandome directamente con PHP (ayudado por Dreamweaver) ya que te facilita mucho la tarea. Luego es cuestión de cuidar la parte estetica (con flash…) y a correr. Saludos.

  19. Lotas

    Hola, me parece muy fuerte lo de Jam cuando dice:

    Un “10″ para el tecnicos y un “0″ para el docente.
    :shock:
    Creo que críticas destructivas como esta andan sobrando por aquí y que Carlos ha estado muy “políticamente correcto” y comedido en su respuesta.
    Habría que valorar y respetar más el trabajo desinteresado de aquellos que sacan un tiempo que no tienen para hacerlo.
    Un saludo agradecido, Carlos.

  20. dae

    Estoy en plena empollada inicial sobre estas tecnologias, articulos como este y otros de este site me ahorran una burrada de horas en formar mis ‘mapas mentales’.
    Solo puedo dar las gracias, gracial mil.

    pd: Otro detalle es que se contagia el entisiasmo por sus posibilidades, tambien se agradece :wink:

  21. compa

    Una pregunta, estoy en blanco en cuanto al uso del lcds, lo he instalado y quiero poder por lo menos hacer un holamundo que se publique en todos los clientes, el problema es que por mas que he buscado no consigo una referencia que te explique paso a paso (Soy muy novato) la forma dehacer la conexion desde flex con el lcds si alguien me pudiera ayudar o pasarme una referencia se lo agradeceria, como antecedente soy programador .net.

    Saludos y gracias de antemano

  22. Pingback: Introducción a Web Services con .NET y FLEX « Consultoria y formacion Adobe

  23. acnesiac

    Hola me he encontrado con esta pagina que es muy interesante, y tengo una duda respecto a los dataservices, si tengo dos dataservices apuntando al mismo destination, por que una modificacion asociada al primer DS prende la bandera commitRequired en los dos DS asociados al mismo destination.

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Acerca de Made In Flex

Made In Flex es una comunidad de desarrolladores de Apache Flex creada en 2006.

Apache Flex, anteriormente conocido como Adobe Flex, es un SDK (kit de desarrollo de software) para crear aplicaciones enriquecidas - multiplataforma basadas en Adobe Flash donado por Adobe a la fundación Apache in 2011 y promocionado a proyecto de primer nivel en Diciembre de 2012.

Actualmente estamos cambiando muchos aspectos del sitio web para ofrecer un sitio útil para toda la comunidad que tenga en cuenta las necesidades actuales.

Últimas Fotos

Instalador de Apache Flex

Entrar o Registrase