Hoy he tenido la oportunidad de toquetear el AMFPHP.

AMFPHP son un conjunto de clases PHP de código abierto, que permiten ser accedidas desde los componentes de Flash Remoting MX.

El problema actual, es que Macromedia solamente soporta .NET y Java en su producto Flash Remoting MX, con lo que deja fuera del espectro a muchos desarrolladores que utilizamos PHP ó ASP y deseamos una conectividad mejorada con servidores.

En cualquier caso, Macromedia se ha encargado de definir el protocolo AMF, que no es más que un convenido de intercambio de datos entre el servidor y el cliente en formato binario, de forma que se pueda establecer una comunicación satisfactoria. Además ha incorporado soporte para este protocolo en sus más recientes versiones de Flash: MX y MX 2004.

Usando AMFPHP, tenemos a nuestro alcance unas clases PHP que también son capaces de "entender" el lenguaje AMF. De esta forma cerramos el círculo y podemos comunicar a Flash y PHP con el mismo "idioma", y así tener acceso a Flash Remoting.

Flash Remoting es una tecnología que permite invocar a métodos alojados en una clase del servidor, que está escrita en un lenguaje de servidor, como ASP.NET, ó Java, y virtualmente con cualquier lenguaje.

Por tanto, acerca la filosofía de los servicios web a los usuarios de Flash de una forma sencilla. Esto permite, por ejemplo invocación remota de métodos, independientemente del servidor donde estén, y del lenguaje en el que estén escritos, siempre y cuando cumplan AMF. Es decir, desde Flash, puedo instanciar una clase, luego ejecutar un método, y luego tratar sus resultados. La particularidad es que esa clase y ese método, no están alojados en el cliente sino en el servidor, y además no están escritos en Action Script sino en PHP. La ventaja de esto es que los métodos en PHP pueden acceder a recursos no disponibles en el navegador (bases de datos, envío de emails, generación de PDF), y luego ser retornados y tratados por el propio Flash.

El funcionamiento es muy similar al de los servicios web tradicionales, usando HTTP como protocolo de transferencia de datos. La principal diferencia es que mientras los servicios web usan SOAP (intercambio de XML por HTTP), Flash Remoting usa AMF (intercambio de datos binarios por HTTP).

La mayor ventaja de AMF frente a SOAP es que las transferencias son más eficientes porque usualmente la información a transmitir es de menor tamaño. Por contra, no son datos legibles a simple vista como el caso de XML, lo que complica la detección de errores.

Es una pena que Macromedia no haya desplegado su producto abarcando no solo .NET (C#, Visual Basic y J#) y Java, sino además ASP, PHP y Perl. De esta forma tendríamos una tecnología capaz de interactuar desde Flash con casi cualquier tipo de servidor y con casi cualquier lenguaje.

Como alternativa a AMFPHP tenemos PHPObject, las funcionalidades son muy similares, pero sin usar AMF. Por tanto no utiliza las clases nativas de Flash para el acceso a Flash Remoting a través de AMF, si no unas propias de PHPObject que permiten acceder a ese formato de intercambio.