Integrando PHP y ActionScript a través de AMF by Joan Garnet
Upcoming SlideShare
Loading in...5
×
 

Integrando PHP y ActionScript a través de AMF by Joan Garnet

on

  • 3,275 views

Integrando PHP y ActionScript a través de AMF ...

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

Statistics

Views

Total Views
3,275
Views on SlideShare
3,251
Embed Views
24

Actions

Likes
0
Downloads
37
Comments
0

1 Embed 24

http://www.slideshare.net 24

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Integrando PHP y ActionScript a través de AMF by Joan Garnet Integrando PHP y ActionScript a través de AMF by Joan Garnet Presentation Transcript

  • 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 Integrando 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 PHP y ActionScript 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 a través de AMF 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 Presentador: Joan Llenas 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 00000220 72 6f 57 41 53 63 50 63 65 65 74 73 69 6f 63 42 69 6f 6f 64 6e 61 43 09 6f 05 64 01 69 04 blog joangarnet.com 67 01 rWSPeticionCodig oAccesoBoda twitter: @joangarnet 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 ...:: PHP Barcelona conference 2009 ::... 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 domingo 1/11(noviembre)/2009 1
  • 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
  • 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 View slide
  • 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 View slide
  • 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
  • 4. ¿Por qué AMF? domingo 1/11(noviembre)/2009 6
  • 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
  • 4.2. Implementaciones disponibles • ColdFusion • Python • Implementación nativa • PyAMF • Java • Flashticle • BlazeDS • Perl • Red5 • AMF::Perl • • Cinnamon Pimento • .NET • AMF.NET • Granite • FluorineFX • LiveCycle Data Services • WebORB • OpenAMF • PHP • Curl • Curl Data Services • AMFPHP • WebORB • SabreAMF • Zend_AMF • Ruby • y en continuo aumento.... • RubyAMF • WebORB domingo 1/11(noviembre)/2009 8
  • 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
  • 5. Protocolo binario AMF domingo 1/11(noviembre)/2009 10
  • 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
  • 5.1. AMF a vista de pájaro • Petición domingo 1/11(noviembre)/2009 12
  • 5.1. AMF a vista de pájaro • Respuesta domingo 1/11(noviembre)/2009 13
  • 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
  • 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
  • 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
  • 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
  • QA ? domingo 1/11(noviembre)/2009 18
  • Cierre • 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 domingo 1/11(noviembre)/2009 19