Flex Data Services

Después de hablar de las nuevas habilidades de mensajerí­a que trae Flex Enterprise Services 2.0 (FES) con la posibilidad de hacer “Data Push” desde el servidor a los clientes ví­a RTMP, no podí­a dejarme en el tintero la segunda gran novedad de esta nueva versión: Los Flex Data Services. Pero antes una breve introducción…

Antes

En anteriores versiones de Flex disponiamos de 3 formas de acceder a los datos:

FES antes...

Es decir:

  • HTTPService – Mediante el cuál podemos consumir XML sobre HTTP principalmente. Este servicio es usado para hacer conexiónes HTTP (o HTTPS) más tradicionales incluyendo los datos dentro del cuerpo de un mensaje get o post.
  • Remote Object – Acceso directo a métodos en objetos java en el servidor mediante AMF (un protocolo binario y ligero basado en SOAP). También podemos acceder a servicios en otros lenguajes puesto que ya existen diversas implementaciones la mayorí­a open source.
  • Web Service – Acceso a Servicios Web de la manera tradicional mediante SOAP. Usado principalmente cuando necesitamos un estándard para comunicarnos por encima del rendimiento en las comunicaciones.

Hasta el momento parecí­a que tení­amos la suficiente flexibilidad para tener acceso a los servicios correspondientes en nuestro backend o en terceros sistemas. Pero no…

Ahora

Con la introducción del bus de mensajerí­a en FES 2.0, la foto es ahora algo más compleja dado que los anteriores servicios son ahora una parte del sistema junto con los nuevos servicios de datos. Como podeis ver en la siguiente figura, HTTPService, Remote Object y Web Service se engloban dentro de los Servicios RPC (Remote Procedure Call) cuyo modelo de programación se centra en la invocación de métodos en servicios remotos:

FES antes...

Por otro lado, tenemos los nuevos Data Services (Data Sync, Offline y Paging) cuyo proposito es muy diferente. El foco de este tipo de servicios se encuentra en los objetos y datos de forma que no es necesario realizar invocaciones a métodos remotos debido a que los datos se sincronizan de forma transparente al usuario. Es decir, gracias al trabajo conjunto del framework de Flex en cliente actuando con los servicios de datos en el servidor, los datos se mantienen sincronizados, actualizados y frescos de forma que la programación se simplifica enormemente. Además y gracias a la potencia del bus de mensajerí­a así­ncrona comentada en el anterior post podemos mantener al resto de clientes actualizados sin ningún esfuerzo adicional.

Imaginad que nuestra aplicación tiene un DataGrid cuyo dataProvider es un ArrayCollection(una de las nuevas clases del framework de Flex con las capacidades necesarias junto con la clase DataService para comunicarse con los Servicios de Datos del servidor) y realizamos un cambio de un campo de dicha tabla, el framework es lo suficientemente inteligente como para comunicarse con el servidor y notificar los cambios sincronizando estos datos con el backend sin necesidad de invocaciones explicitas por parte del usuario.

Sin duda esta nueva forma de enfocar el problema hace de FES 2.0 un paquete extremadamente potente que permitirá desarrollar toda una nueva generación de RIAs con funcionalidades que hasta el dí­a de hoy no eran posibles o realmente dificiles de llevar a cabo.

Si te ha entrado el gusanillo y quieres saber más te recomiendo que consultes los diversos tutoriales, artí­culos y presentaciones que puedes encontrar en el wiki de los laboratorios de Adobe.

14 Comentarios

  1. Si, ya era hora de que llegara la revolución a las RIAs basadas en Flash.

    Lo miro y no dejo de asombrarme. LA única pega es si quieres comenzar un proyecto ya basándote en Flex2 Beta2, pues tendrás que esperar a que salga la versión definitiva, no?

  2. Yo creo que no Ariel, ten en cuenta que el producto está a la hora de escribir esto en Beta 2, lo que significa que está super avanzado. Parece que habrá Beta 3 y Release final de aquí­ a unos dos meses (según se rumorea).

    Creo que puedes plantearte desde ya empezar a aprender Flex 2, a planificar proyectos en Flex2 e incluso a empezar a desarrollar en Flex 2, pues dos meses no es tiempo apenas.

    Sin duda y desde ya, este es el camino a seguir.

  3. Estoy de acuerdo. Más viendo lo fácil que tareas, en principio sencillas, se hacen con este nuevo framework. Tal como decí­a Aral, el la profusión de componentes en esta plataforma es genial!

    Creo que intentaré hacer un poco de pinitos con Cairgorn, ya que comentan que es el más utilizado en el mundo Flex, aunque conozco un poquito más de ARP (no lo suficiente como para tirar por él) y he escuchado rumores de que están perfilando la versión 3…

    Gracias por tu recomendación, Carlos!! 🙂

  4. últimamente me tiro más por Cairnogorm debido a que ARP es algo complicado de seguir últimamente y todaví­a no hay ni siquiera una alpha de ARP3 y si de Cairngorm 2.

    Además Steven Webster ha publicado 6 articulos muy interesantes sobre el tema…aunque realmente siempre he considerado que Cairngorm y ARP eran lo mismo con diferente nombre y cambiando alguna pequeña cosa o patrón.

    Pero sin duda hoy dí­a y con Flex 2, creo que Cairngorm da menos dolores de cabeza 🙂

  5. He seguido todos los artí­culos y es impresionante el esfuerzo que están haciendo los cracks esos por vendernos la moto 😉

    Yo, por el momento, veo claro que Cairngorm es la ví­a a seguir, también porque hay mucho más soporte en los fórums.

    Ahora estoy enfrascado en ver cómo integro AMFPHP con Cairngorm y Flax2. Probablemente usemos AMFPHP para un nuevo proyecto y prefiero usar los bussiness services tal y como se implementan en el demo “login”, aunque la tarea no parece fácil…

    Sabéis algo de este tema para echarme un cable?? 🙂

  6. Hola!
    Habrá algun ejemplo de implementación de paginación de gran cantidad de datos usando Flex Data Services y Java a través de RPC?
    Gracias!

  7. Hola Daniel,

    Por lo que he leido hasta el momento la paginanción es automática. Es decir, FDS maneja la paginación automáticamente por ti por detrás.

    Mira aquí­:
    http://www.adobe.com/devnet/flex/articles/architecting_rias_06.html

    “When you execute a fill method to retrieve a list of objects from the server, you can enable paging so that only the first page is retrieved as the result for the fill request. As you access items that are not yet loaded, the page containing those items is loaded automatically.”

  8. Oye Carlos, la verdad es que me resulta difí­cil entender esto de Data Services. Entiendo los beneficios de usar este enfoque para el manejo de datos, sin embargo, sin embargo no he logrado hacer andar un ejemplo sencillo de paginación (que es lo que más me interesa en estos momentos).
    Me gustarí­a me explicaras, basandote en tu experiencia, de que manera me ayudarí­a FDS en mi aplicación que maneja grandes volumenes de datos, pero que no necesariamente necesitan sincronización. Estoy trabajando bajo J2EE.

    Nuevamente, gracias.

  9. Daniel, te recomiendo que busques mires los articulos en Devnet y los ejemplos que vienen con el propio FDS. Al comienzo conviene realizar este tipo de ejemplos paso a paso, comprendiendo bien cada engranaje. Estoy seguro de que así­ lograrás hacerlos funcionar. Me gustarí­a hacer algún tutorial pero lamentablemente estoy sin tiempo (creo que se nota por la falta de post de estas últimas semanas ) :(.

    Solo puedo decirte que FDS facilita mucho la integración con datos. No es la única opción pues usando OpenAMF también puedes conseguir una comunicación limpia, pero FDS va un paso más allá dandote una facilidad que hasta ahora no existí­a ya que los propios componentes se encargan de todas las operaciones CRUD básicas y nosotros solo tenemos que “enganchar” código en determinados puntos cuando sea necesario para ejecutar determinadas logicas en nuestra aplicación.

    La sincronización no tiene porque ser necesaria, ya solo con estas facilidades merece la pena usar FDS sobre cualquier otra solución. Al menos es lo más comodo y eficiente. Muchos de los problemas que te encontrarí­as con OpenAMF nunca los verás en FDS porque ya están resultos de forma elegante o incluso transparente para el usuario.

  10. FDS es mucho más avanzado que OpenAMf en todos los aspectos, por tanto, la respuesta es no. Pero lo que hay que estudiar es si realmente te hacen falta todas las funcionalidades de FDS…

  11. tengo lo siguiente:

    {arrRegiones.getItemAt(miComboAnyos.selectedIndex).codigo}

    y en php deberia recibir “codigo”, pero no reconocer codigo
    neceisto mandar codigo para una consulta sql en mysql

    alguien sabe como hacer esto, como debo enviar o recibir la variable codigo para que funione

  12. Hola, yo estoy usando FDS o mejor dicho LCDS (que es Life Cycle Data Services , el nuevo nombre) y me parece excelente ya que incluye un assembler (mecanismo que permite exponer los objetos de acceso a datos) para hibernate, por lo que de una manera muy simple se puede acceder a las entidades del dominio, el único problema es que Adobe se quedó en el camino y requiere que el mapeo objeto-relacional sea mediante los archivos *.hbm.xml en vez usar la metadata de persistencia de hibernate-annotations, bueno finalmente pude extender la funcionalidad del hibernate assembler de Adobe para usar annotations, quedó bastante elegante porque simplemente se extiende una clase y se sobrescribe un método protegido, se puede ver la explicación completa en: http://tecav.blogspot.com

    Saludos!

Deja un comentario

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