Comunicación Flex 2 <--> Flash 8

Si alguno de vosotros ha desarrollado aplicaciones de un tamaño considerable, puede que este pensando en migrarlas a Flex 2. Acometer dicho cambio no es sencillo debido a que tenemos dos lenguajes (similares, pero al fin y al cabo dos lenguajes, AS2 y AS3) y dos máquinas virtuales distintas (AVM y AVM+). Como muchos sabreis, no existe posibilidad de comunicación directa entre SWFs creados para distintas máquinas virtuales.

Pensando ayer en este problema se me ocurrio que la solución serí­a utilizar el objeto nativo LocalConnection para comunicar distintos SWFs. Para mi sorpresa hoy he podido ver un magnifico post de Peter Ent tratando exactamente este tema:

Comunicación entre Flex2 - Flash 8

Esto significa que podemos plantear una migración progresiva de nuestra RIA, de forma que el usuario pueda ir accediendo a las diferentes milestones (siempre cuando hayamos desarrollado un plan para la migración por partes) y pueda ir disfrutando de las mejoras desarrolladas en Flex 2 mientras sigue teniendo acceso a otros modulos, todaví­a sin migrar, en versiones anteriores a la versión 9 del Flash Player.

13 Comentarios

  1. Yo estaba esa semana con ese preciso problema, pero al final lo he solucionado exportando los flas’s a actionscript 3.0 con el alpha de flash proffesional 9. Por cierto, la alpha mas estable que he visto en mi vida..

    un saludo

  2. Hola Miguel,

    Supongo que te refieres al caso de que tus SWFs no tengan código, o no necesiten interactuar con su entorno, puesto que en caso contrario tienes el problema que hablabamos de comunicación entre AVMs distintas.

  3. Carlos…Pero …flash proffesional 9 alpha no utiliza la misma avm que flex 2.0 ? yo creia que si. No entiendo para que s necesario complicarse lavida con 2 avm distintas teniendo el flash proffesional 9 alpha .

  4. Hola Alek,

    Imagina que tienes un proyecto de unas dimensiones considerables. El migrarlo entero a AS3 puede ser una tarea de varios meses/hombre, algo que puede acabar con la migración antes de empezarla. Por tanto, para mi es muy interesante, el poder hacer un “shell” en AS3/Flex2, y poder cargar los modulos AS2 y acceder a ellos desde AS3, de forma que la migración sea gradual.

    Se me ocurren más motivos, pero evidentemente el objetivo final en la mayorí­a de ocasiones serí­a una migración 100% a AS3.

  5. Hola Carlos!!

    Cuanto tiempo hace que no posteo nada!!

    Me alegra ver que tenia razón cuando decia que flex y java iban a acabar juntos hasta la médula, de echo siempre dije que el mundo java era mucho mas potente y versatil que el mundo flash y que si la VM de java fuese mas ligera quizás nunca hubiesemos hablado de flash (con esto ya me gane la enemistad de muchos del post y ahora supongo sangraran mas).

    Para defender tu postura diré que localConnection puede ser muy útil sobre todo cuando trabajamos con un MVC donde el modelo estarí­a en nuestra aplicación flex, y todos los elementos de la interfaz actualizan el modelo, dichos elementos tambien podrian ser swf antiguos cargados, lo único que habria que hacer es una capa de negocios intermedia que traduzca cada uno de los localconnection a una operación que interactue con el modelo y viceversa.

    AAHHH la importancia de los modelos…

    pd: Mirando a conciencia Flex veo que para usar AMF es necesario contar con Flex Data Services, ¿que pasa con los que tienen Flash comm o Media y no quieren montar un p*** servidor y quieren desarrollar swf completos que puedan alojar en cualquier parte?

    un abrazo Carlos.

    d

  6. Hola Carlos. Claro, en el proyecto que tengo ahora los fla son gráficos con un único stop() al final y pequeñas rutinas de giro, que no me han llevado más de una hora en cambiar.

    Las mejoras de AS3 y AVM+ con respecto a flash 8 las veo en sólo dos planos: agilidad de desarrollo y rendimiento en ejecución. Prácticamente cualquier aplicación que podemos hacer con AS3 la podí­amos hacer con AS2 (me da la sensación que estoy metiendo la pata hasta la rodilla…), eso si, en un año en vez de un mes y con una calidad y rendimiento muchas veces inferior.

    Por eso no veo que vaya a ser habitual este tipo de migración. Si el cambio en la aplicación es significativo será más conveniente una migración total. Si el cambio es pequeño se seguirá utilizando AS2.

    Todo esto mientras no te casque Flash 9. Aunque muy estable, es una Alpha, asi que nunca se sabe…

  7. Hola David,

    Puedes usar AMF sin FDS2. De hecho hay un ejemplo simple en este blog de uso con OpenAMF y EJB3 (Easybeans).

    Lo normal es que los gateways antiguos AMF0 (como OpenAMF, o AMFPHP), poco a poco deben ir soportando AMF3 (De hecho algunos ya lo hacen), de hecho ya hay bastante información en osflash.org sobre las interioridades de AMF3. Es cuestión de dar tiempo a que vayan surgiendo dichas actualizaciones.

    Tiempo al tiempo… 🙂

  8. @Miguel,

    Efectivamente, las mejoras “visibles” son sobre todo de cara al rendimiento. No hay novedades (p. ej,como los filtros, en FP8).

    En aplicaciones muy grandes como es mi caso, puede ser una ventaja el tipo de migración que planteo ya que el cliente puede ir viendo el “work in progress” y beneficiarse casi al instante de las mejoras obtenidas. Estoy hablando de proyectos cuyo tiempode desarrollo es más de un año (incluso dos o tres). En este caso decirle al cliente que hasta dentro de todo ese tiempo no va a ver la nueva versión de su solución es cuanto menos…complicado 🙂

  9. Vaya chasco que me he llevado. Puedo cargar los swf recompilados a as3 sin problemas, pero parece que es imposible añadir movieclips creados sobre la marcha en ningún componente flex.

  10. Hola Carlos, antes de nada felicitarte por las ponencias sobre flex que he visto por Internet.

    Queria hacerte una pequeña consulta sobre un problema que tengo con Flex:

    Disponemos de una base de datos y el acceso a ella está, actualmente, mediante páginas en asp, que devuelven las filas con la información solicitada. Ahora bien, yo quiero implementar los grid de flex en ese mismo proyecto. ¿Hay alguna manera, en Flex, de atacar la base de datos directamente sin tener que recurrir a una página asp y que ésta a su vez me devuelva el resultado en XML?.

    Y otra última cuestión que me está volviendo loco y no lo veo reflejado en la ayuda:

    ¿Cómo puedo pasar gran cantidad de parámetros a una aplicación Flex, que no sea mediante el sistema HTTP o FlasVar?

    Muchas gracias por atenderme.

  11. Carlos: te comento, hemos hecho este sitio: http://www.artepleno.com, todo esta en flash, ahora he descubierto flex, comence a meterme y logre hacer algo que quiero agregar. De manera ilusa cuando termine de hacer el componente para convocatorias, entre a flash, al menu y puse loadMovie como hago siempre, al swf que hice con flex, obviamente no funciono, con esto que propones por aqui puede solucionarse o como debo hacer para que haga el loadMovie con el componente hecho en flex. Muchas gracias.

  12. Hola Pablo,

    En flex tienes el SWFLoader. Por otra parte tienes diversas formas de comunicarte con contenido anterior a flash 9 (LocalConnection, SharedObjects y ExternalInterface). Mi recomendación es que hagas tu contenido para Flash Player 9, ya que te ahorraras proeblemas.

Deja un comentario

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