Ponencia PHP Barcelona Conference 2009.
Acerca de las posibilidades de integración cliente-servidor entre la plataforma Flash y PHP.
Ejemplos descargables en:
http://www.joangarnet.com/blog/?p=759
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