Integrando PHP y ActionScript a través de AMF
by Joan Garnet
* Ver un caso de uso ActionScript + PHP
* Entender AMF y su potencial como protocolo de transporte
* Conocer el espectro de soporte en distintos lenguajes
* Conocer las implementaciones de AMF para PHP
* Comparar características de las principales implementaciones p
* Saber qué nos depara el futuro en relación a ActionScript + PH
2. Indice
1. Presentación
2. Objetivos de esta charla
3. ¿Qué es AMF?
4. ¿Por qué AMF?
1. Beneficios
2. Implementaciones disponibles
3. Benchmarks
5. Protocolo binario AMF
1. AMF a vista de pájaro
2. ¿Cómo se maneja en el lado cliente?
3. ¿Cómo se implementa en el lado servidor?
6. AMF para PHP
• Distintas implementaciones de AMF existentes para PHP
• Diferencias entre las las principales implementaciones de AMF para PHP
• Caso de uso Flex + AMF con las principales implementaciones de AMF para PHP
7. Futuro
8. Q&A
9. Cierre
domingo 1/11(noviembre)/2009 2
3. 1. Presentación
• Joan Llenas Maso a.k.a Joan Garnet
• 10 años desarrollo web: ActionScript, DHTML, PHP, Java, etc...
• Socio fundador de Codeoscopic S.A.
• Miembro de la comunidad de desarrollo web
• joangarnet.com ( blog personal )
• subflash.com ( comunidad desarrollo web y org. eventos )
• madeinflex.com ( co-manager Flex AUG España )
• ponente en algunos eventos...
domingo 1/11(noviembre)/2009 3
4. 2. Objetivos de esta charla
• Ver un caso de uso ActionScript + PHP
• Entender AMF y su potencial como protocolo de transporte
• Conocer el espectro de soporte en distintos lenguajes
• Conocer las implementaciones de AMF para PHP
• Comparar características de las principales implementaciones para PHP
• Saber qué nos depara el futuro en relación a ActionScript + PHP
domingo 1/11(noviembre)/2009 4
5. 3. ¿Qué es AMF?
• AMF Action Message Format es un protocolo binario inspirado en SOAP
• Especificación abierta ( LGPL v3 )
• Representa objetos ActionScript serializados de forma compacta
• Es utilizado nativamente en distintas APIs del Flash Player para
almacenaje e intercambio de datos:
• ByteArray
• Socket Application Server
• LocalConnection
• NetConnection / NetStream Remoting Gateway
• URLLoader / URLStream HTTP response
• SharedObject AMF over HTTP
HTTP request
• Se transmite a través de HTTP/S, RTMP/S y RTMFP/S Networking APIs
• Versiones: Flash Player
• AMF0 >> Año 2002 >> Soportado en Flash Player > 6 && < 9 (AS1 y AS2)
• AMF3 >> Año 2007 >> superconjunto de AMF0 >> Soportado en Flash Player >= 9 (AS3)
domingo 1/11(noviembre)/2009 5
7. 4.1. Beneficios
• Tamaño del archivo:
• Los objetos AMF, al ser simples representaciones binarias, son muy ligeros. Además se comprimen con zlib
• Serialización/Deserialización:
• El proceso de conversión de AMF a objetos ActionScript y viceversa se realiza mediante APIs nativas del Flash Player
implementadas en el lenguaje C con lo cual es extremadamente rápido
• El proceso es automático y totalmente transparente para el desarrollador
• El protocolo soporta tanto objetos ActionScript nativos como personalizados:
• Boolean (nativo)
• Rectangulo extends Forma implements IDibujable, IClonable (personalizado)
• Permite transportar vídeo*por ahora solo con RTMP/RTMFP, audio e imágenes
• Bastantes implementaciones del lado servidor disponibles....
domingo 1/11(noviembre)/2009 7
9. 4.3. Benchmarks
• Benchmarks ejecutados con Census,
aplicación desarrollada por James
Ward (Adobe).
• Todos los tests ejecutados con
compresion GZIP y pidiendo tablas de
5000 filas excepto el de Dojo que
pide 500.
• Live Demo disponible en:
http://www.jamesward.com/census/
• Código fuente disponible bajo licencia GPL en
http://flexapps.sourceforge.net/
Census con todos los tests ejecutados. Todos pidiendo tablas de 5000 filas excepto el de Dojo que pide 500.
domingo 1/11(noviembre)/2009 9
11. 5.1. AMF a vista de pájaro
• En un paquete AMF se distinguen estas partes:
• Preámbulo: Contiene información básica de la naturaleza de la
petición.
• Cabeceras: Se pueden utilizar para enviar info de debug,
autentificación, etc...
• Cuerpos: La petición propiamente dicha. Aquí van las operaciones y los
objetos serializados, tanto de petición como de respuesta.
• Batching:
• Un mismo paquete AMF puede llevar varias peticiones.
domingo 1/11(noviembre)/2009 11
12. 5.1. AMF a vista de pájaro
• Petición
domingo 1/11(noviembre)/2009 12
13. 5.1. AMF a vista de pájaro
• Respuesta
domingo 1/11(noviembre)/2009 13
14. 5.2. ¿Cómo se maneja en el lado cliente?
• ActionScript
• NetConnection ( RPC )
• SharedObject
• LocalConnection
• ByteArray
• Flex
• RemoteObject ( RPC )
• Estas clases trabajan con datos AMF de forma nativa. La serialización/
deserialización es totalmente transparente.
• Todas las clases pueden tener una representación AMF exceptuando
flash.display.DisplayObject.
domingo 1/11(noviembre)/2009 14
15. 5.3. ¿Cómo se implementa en el lado servidor?
• El Flash Player utiliza AMF para comunicarse con un servior remoto.
• AMF codifica llamadas RPC (Remote Procedure Calls) en una representación
binaria compacta.
• Las llamadas son transferidas a través de HTTP/S.
• El servidor dispone de una gateway que dirige las llamadas de forma
centralizada.
• El gateway es el punto de unión entre el server y el Flash Player y es dónde
la serialización/deserialización tiene lugar.
• Durante el proceso de serialización/deserialización los objetos mantienen su
tipo.
• En el caso de tipos nativos no soportados existen tablas de conversión.
• Si se requiere implementar un tipo nuevo existe la posibilidad de desarrollar
un adaptadores personalizados.
domingo 1/11(noviembre)/2009 15
16. 6. AMF para PHP
• Distintas implementaciones de AMF existentes para PHP
• Diferencias entre las las principales implementaciones de AMF para PHP
• Caso de uso Flex + AMF con las principales implementaciones de AMF para PHP
domingo 1/11(noviembre)/2009 16
17. 7. Futuro
• Mensajería ( AMF streaming, long polling.... )
• RTMP / RTMFP ( Vídeo, Audio.... )
• Más implementaciones de clases nativas ( ByteArray... )
• Mejorar las implementaciones existentes ( PHP5 packages.... )
domingo 1/11(noviembre)/2009 17