+ All Categories
Home > Technology > Integrando PHP y ActionScript a través de AMF

Integrando PHP y ActionScript a través de AMF

Date post: 18-Dec-2014
Category:
Upload: joan-llenas
View: 655 times
Download: 1 times
Share this document with a friend
Description:
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
19
00000000 00 03 00 00 00 05 00 04 6e 75 6c 6c 00 02 2f 35 rWSPeticionCodig 00000010 00 00 01 63 0a 00 00 00 01 11 0a 81 13 4f 66 6c rWSPeticionCodig 00000020 65 78 2e 6d 65 73 73 61 67 69 6e 67 2e 6d 65 73 ex.messaging.mes 00000030 73 61 67 65 73 2e 52 65 6d 6f 74 69 6e 67 4d 65 sages.RemotingMe 00000040 73 73 61 67 65 0d 73 6f 75 72 63 65 13 6f 70 65 ssage source ope 00000050 72 61 74 69 6f 6e 09 62 6f 64 79 13 6d 65 73 73 ration body mess 00000060 61 67 65 49 64 15 74 69 6d 65 54 6f 4c 69 76 65 ageId timeToLive 00000070 13 74 69 6d 65 73 74 61 6d 70 17 64 65 73 74 69 timestamp desti 00000080 6e 61 74 69 6f 6e 0f 68 65 61 64 65 72 73 11 63 nation headers c 00000090 6c 69 65 6e 74 49 64 01 06 41 6c 69 73 74 61 72 lientId Alistar 000000a0 57 53 50 65 74 69 63 69 6f 6e 43 6f 64 69 67 6f WSPeticionCodigo 000000b0 41 63 63 65 73 6f 42 6f 64 61 09 05 01 04 01 04 AccesoBoda 000000c0 01 06 49 35 43 32 41 39 41 36 46 2d 45 30 32 36 I5C2A9A6F-E026 000000d0 2d 30 33 37 31 2d 46 43 32 42 2d 31 43 32 41 38 -0371-FC2B-1C2A8 000000e0 33 34 30 44 33 46 34 04 00 04 00 06 1f 62 6f 64 340D3F4 bod 000000f0 61 44 65 73 74 69 6e 61 74 69 6f 6e 0a 0b 01 21 aDestination ! 00000100 44 53 52 65 71 75 65 73 74 54 69 6d 65 6f 75 74 DSRequestTimeout 00000110 04 78 15 44 53 45 6e 64 70 6f 69 6e 74 06 0d 6d x DSEndpoint m 00000120 79 2d 61 6d 66 09 44 53 49 64 06 49 32 38 43 31 y-amf DSId I28C1 00000130 44 39 32 31 2d 41 45 31 42 2d 35 31 38 41 2d 30 D921-AE1B-518A-0 00000140 46 33 36 2d 45 38 35 41 36 46 43 32 45 43 44 35 F36-E85A6FC2ECD5 00000150 01 06 49 32 38 43 31 45 35 39 31 2d 34 36 32 39 I28C1E591-4629 00000160 2d 35 36 36 32 2d 46 39 33 31 2d 46 31 44 34 32 -5662-F931-F1D42 00000170 44 31 34 41 34 31 36 00 04 6e 75 6c 6c 00 02 2f D14A416 null / 00000180 36 00 00 01 63 0a 00 00 00 01 11 0a 81 13 4f 66 6 c Of 00000190 6c 65 78 2e 6d 65 73 73 61 67 69 6e 67 2e 6d 65 lex.messaging.me 000001a0 73 73 61 67 65 73 2e 52 65 6d 6f 74 69 6e 67 4d ssages.RemotingM 000001b0 65 73 73 61 67 65 0d 73 6f 75 72 63 65 13 6f 70 essage source op 000001c0 65 72 61 74 69 6f 6e 09 62 6f 64 79 13 6d 65 73 eration body mes 000001d0 73 61 67 65 49 64 15 74 69 6d 65 54 6f 4c 69 76 sageId timeToLiv 000001e0 65 13 74 69 6d 65 73 74 61 6d 70 17 64 65 73 74 e timestamp dest 000001f0 69 6e 61 74 69 6f 6e 0f 68 65 61 64 65 72 73 11 ination headers 00000200 63 6c 69 65 6e 74 49 64 01 06 41 6c 69 73 74 61 clientId Alista 00000210 72 57 53 50 65 74 69 63 69 6f 6e 43 6f 64 69 67 rWSPeticionCodig 00000220 6f 41 63 63 65 73 6f 42 6f 64 61 09 05 01 04 01 oAccesoBoda 00000230 04 02 06 49 32 30 37 30 32 37 33 45 2d 37 39 38 I2070273E-798 00000240 42 2d 35 46 31 37 2d 39 39 31 46 2d 31 43 32 41 B-5F17-991F-1C2A 00000250 38 33 34 31 45 30 42 43 04 00 04 00 06 1f 62 6f 8341E0BC bo 00000260 64 61 44 65 73 74 69 6e 61 74 69 6f 6e 0a 0b 01 daDestination 00000270 21 44 53 52 65 71 75 65 73 74 54 69 6d 65 6f 75 !DSRequestTimeou 00000280 74 04 78 15 44 53 45 6e 64 70 6f 69 6e 74 06 0d t x DSEndpoint 00000290 6d 79 2d 61 6d 66 09 44 53 49 64 06 49 32 38 43 my-amf DSId I28C 000002a0 31 44 39 32 31 2d 41 45 31 42 2d 35 31 38 41 2d 1D921-AE1B-518A- 000002b0 30 46 33 36 2d 45 38 35 41 36 46 43 32 45 43 44 0F36-E85A6FC2ECD 000001c0 65 72 61 74 69 6f 6e 09 62 6f 64 79 13 6d 65 73 eration body mes 00000100 44 53 52 65 71 54 69 6d 65 6f 75 74 DSRequestTimeout Presentador: Joan Llenas blog joangarnet.com twitter: @joangarnet ...:: PHP Barcelona conference 2009 ::... Integrando PHP y ActionScript a través de AMF 1 domingo 1/11(noviembre)/2009
Transcript
Page 1: Integrando PHP y ActionScript a través de AMF

00000000 00 03 00 00 00 05 00 04 6e 75 6c 6c 00 02 2f 35 rWSPeticionCodig00000010 00 00 01 63 0a 00 00 00 01 11 0a 81 13 4f 66 6c rWSPeticionCodig00000020 65 78 2e 6d 65 73 73 61 67 69 6e 67 2e 6d 65 73 ex.messaging.mes00000030 73 61 67 65 73 2e 52 65 6d 6f 74 69 6e 67 4d 65 sages.RemotingMe00000040 73 73 61 67 65 0d 73 6f 75 72 63 65 13 6f 70 65 ssage source ope00000050 72 61 74 69 6f 6e 09 62 6f 64 79 13 6d 65 73 73 ration body mess00000060 61 67 65 49 64 15 74 69 6d 65 54 6f 4c 69 76 65 ageId timeToLive00000070 13 74 69 6d 65 73 74 61 6d 70 17 64 65 73 74 69 timestamp desti00000080 6e 61 74 69 6f 6e 0f 68 65 61 64 65 72 73 11 63 nation headers c00000090 6c 69 65 6e 74 49 64 01 06 41 6c 69 73 74 61 72 lientId Alistar000000a0 57 53 50 65 74 69 63 69 6f 6e 43 6f 64 69 67 6f WSPeticionCodigo000000b0 41 63 63 65 73 6f 42 6f 64 61 09 05 01 04 01 04 AccesoBoda 000000c0 01 06 49 35 43 32 41 39 41 36 46 2d 45 30 32 36 I5C2A9A6F-E026000000d0 2d 30 33 37 31 2d 46 43 32 42 2d 31 43 32 41 38 -0371-FC2B-1C2A8000000e0 33 34 30 44 33 46 34 04 00 04 00 06 1f 62 6f 64 340D3F4 bod000000f0 61 44 65 73 74 69 6e 61 74 69 6f 6e 0a 0b 01 21 aDestination !00000100 44 53 52 65 71 75 65 73 74 54 69 6d 65 6f 75 74 DSRequestTimeout00000110 04 78 15 44 53 45 6e 64 70 6f 69 6e 74 06 0d 6d x DSEndpoint m00000120 79 2d 61 6d 66 09 44 53 49 64 06 49 32 38 43 31 y-amf DSId I28C100000130 44 39 32 31 2d 41 45 31 42 2d 35 31 38 41 2d 30 D921-AE1B-518A-000000140 46 33 36 2d 45 38 35 41 36 46 43 32 45 43 44 35 F36-E85A6FC2ECD500000150 01 06 49 32 38 43 31 45 35 39 31 2d 34 36 32 39 I28C1E591-462900000160 2d 35 36 36 32 2d 46 39 33 31 2d 46 31 44 34 32 -5662-F931-F1D4200000170 44 31 34 41 34 31 36 00 04 6e 75 6c 6c 00 02 2f D14A416 null /00000180 36 00 00 01 63 0a 00 00 00 01 11 0a 81 13 4f 66 6 c Of00000190 6c 65 78 2e 6d 65 73 73 61 67 69 6e 67 2e 6d 65 lex.messaging.me000001a0 73 73 61 67 65 73 2e 52 65 6d 6f 74 69 6e 67 4d ssages.RemotingM000001b0 65 73 73 61 67 65 0d 73 6f 75 72 63 65 13 6f 70 essage source op000001c0 65 72 61 74 69 6f 6e 09 62 6f 64 79 13 6d 65 73 eration body mes000001d0 73 61 67 65 49 64 15 74 69 6d 65 54 6f 4c 69 76 sageId timeToLiv000001e0 65 13 74 69 6d 65 73 74 61 6d 70 17 64 65 73 74 e timestamp dest000001f0 69 6e 61 74 69 6f 6e 0f 68 65 61 64 65 72 73 11 ination headers 00000200 63 6c 69 65 6e 74 49 64 01 06 41 6c 69 73 74 61 clientId Alista00000210 72 57 53 50 65 74 69 63 69 6f 6e 43 6f 64 69 67 rWSPeticionCodig00000220 6f 41 63 63 65 73 6f 42 6f 64 61 09 05 01 04 01 oAccesoBoda 00000230 04 02 06 49 32 30 37 30 32 37 33 45 2d 37 39 38 I2070273E-79800000240 42 2d 35 46 31 37 2d 39 39 31 46 2d 31 43 32 41 B-5F17-991F-1C2A00000250 38 33 34 31 45 30 42 43 04 00 04 00 06 1f 62 6f 8341E0BC bo00000260 64 61 44 65 73 74 69 6e 61 74 69 6f 6e 0a 0b 01 daDestination 00000270 21 44 53 52 65 71 75 65 73 74 54 69 6d 65 6f 75 !DSRequestTimeou00000280 74 04 78 15 44 53 45 6e 64 70 6f 69 6e 74 06 0d t x DSEndpoint 00000290 6d 79 2d 61 6d 66 09 44 53 49 64 06 49 32 38 43 my-amf DSId I28C000002a0 31 44 39 32 31 2d 41 45 31 42 2d 35 31 38 41 2d 1D921-AE1B-518A-000002b0 30 46 33 36 2d 45 38 35 41 36 46 43 32 45 43 44 0F36-E85A6FC2ECD000001c0 65 72 61 74 69 6f 6e 09 62 6f 64 79 13 6d 65 73 eration body mes00000100 44 53 52 65 71 54 69 6d 65 6f 75 74 DSRequestTimeout

Presentador: Joan Llenas blog joangarnet.comtwitter: @joangarnet

...:: PHP Barcelona conference 2009 ::...

Integrando PHP y ActionScript

a través de AMF

1domingo 1/11(noviembre)/2009

Page 2: Integrando PHP y ActionScript a través de AMF

1. Presentación2. Objetivos de esta charla3. ¿Qué es AMF?4. ¿Por qué AMF?

1. Beneficios

2. Implementaciones disponibles

3. Benchmarks

5. Protocolo binario AMF1. 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. Futuro8. Q&A9. Cierre

Indice

2domingo 1/11(noviembre)/2009

Page 3: Integrando PHP y ActionScript a través de AMF

• 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...

1. Presentación

3domingo 1/11(noviembre)/2009

Page 4: Integrando PHP y ActionScript a través de AMF

• 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

2. Objetivos de esta charla

4domingo 1/11(noviembre)/2009

Page 5: Integrando PHP y ActionScript a través de 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

• LocalConnection

• NetConnection / NetStream

• URLLoader / URLStream

• SharedObject

• Se transmite a través de HTTP/S, RTMP/S y RTMFP/S

• Versiones:• 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)

3. ¿Qué es AMF?

Application Server

Remoting Gateway

Networking APIs

Flash Player

AMF over HTTPHTTP request

HTTP response

5domingo 1/11(noviembre)/2009

Page 6: Integrando PHP y ActionScript a través de AMF

4. ¿Por qué AMF?

6domingo 1/11(noviembre)/2009

Page 7: Integrando PHP y ActionScript a través de AMF

• 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....

4.1. Beneficios

7domingo 1/11(noviembre)/2009

Page 8: Integrando PHP y ActionScript a través de AMF

• ColdFusion• Implementación nativa

• Java• BlazeDS

• Red5

• Cinnamon

• Pimento

• Granite

• LiveCycle Data Services

• OpenAMF

• PHP• AMFPHP

• WebORB

• SabreAMF

• Zend_AMF

• Ruby• RubyAMF

• WebORB

• Python• PyAMF

• Flashticle

• Perl• AMF::Perl

• .NET• AMF.NET

• FluorineFX

• WebORB

• Curl• Curl Data Services

• y en continuo aumento....

4.2. Implementaciones disponibles

8domingo 1/11(noviembre)/2009

Page 9: Integrando PHP y ActionScript a través de AMF

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 enhttp://flexapps.sourceforge.net/

Census con todos los tests ejecutados. Todos pidiendo tablas de 5000 filas excepto el de Dojo que pide 500.

9domingo 1/11(noviembre)/2009

Page 10: Integrando PHP y ActionScript a través de AMF

5. Protocolo binario AMF

10domingo 1/11(noviembre)/2009

Page 11: Integrando PHP y ActionScript a través de AMF

• 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.

5.1. AMF a vista de pájaro

11domingo 1/11(noviembre)/2009

Page 12: Integrando PHP y ActionScript a través de AMF

• Petición

5.1. AMF a vista de pájaro

12domingo 1/11(noviembre)/2009

Page 13: Integrando PHP y ActionScript a través de AMF

• Respuesta

5.1. AMF a vista de pájaro

13domingo 1/11(noviembre)/2009

Page 14: Integrando PHP y ActionScript a través de AMF

• 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.

5.2. ¿Cómo se maneja en el lado cliente?

14domingo 1/11(noviembre)/2009

Page 15: Integrando PHP y ActionScript a través de AMF

• 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.

5.3. ¿Cómo se implementa en el lado servidor?

15domingo 1/11(noviembre)/2009

Page 16: Integrando PHP y ActionScript a través de AMF

• 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

6. AMF para PHP

16domingo 1/11(noviembre)/2009

Page 17: Integrando PHP y ActionScript a través de AMF

• Mensajería ( AMF streaming, long polling.... )

• RTMP / RTMFP ( Vídeo, Audio.... )

• Más implementaciones de clases nativas ( ByteArray... )

• Mejorar las implementaciones existentes ( PHP5 packages.... )

7. Futuro

17domingo 1/11(noviembre)/2009

Page 18: Integrando PHP y ActionScript a través de AMF

?QA

18domingo 1/11(noviembre)/2009

Page 19: Integrando PHP y ActionScript a través de AMF

• Made In Flex (comunidad Flex España)

• http://www.madeinflex.com

• Adobe’s Flex Developer Center: Learn Flex and PHP

• http://www.adobe.com/devnet/flex/flex_php.html

• Adobe TV

• http://tv.adobe.com/search/?q=php&product=Flex

• Adobe Cookbook Flex & PHP recipes

• http://cookbooks.adobe.com/search/PHP

Cierre

19domingo 1/11(noviembre)/2009


Recommended