2009-03-16 11 views
8

¿Cuál es el mejor método para la comunicación entre Flex y PHP?¿El mejor método para la comunicación Flex a PHP?

En el pasado, utilizábamos AMFPHP con AS2, y funcionaba bien en su mayor parte (la ventaja de AMFPHP es que también tiene un modo JSON que le permite utilizar el mismo PHP remoto con Javascript o con las interfaces de Actionscript).)

Sin embargo, parece que AMFPHP ya no se mantiene. Entonces, ¿qué recomienda la gente para reemplazarlo? Hasta ahora, lo que he encontrado es:

  1. Zend_AMF (parece demasiado complejo para nosotros, no estamos utilizando el marco de Zend lo contrario)
  2. AMFPHP (había algunos actualizada con el apoyo de Flex, y parece bastante estable, pero no está seguro sobre el apoyo a largo plazo)
  3. XML (AS3 tiene buenas rutinas de manejo de XML, pero es más de un dolor en el lado PHP)
  4. WebORB (no tengo experiencia con este)
  5. Roll-nuestra-propia usando JSON o algún otro sistema de serialización de datos a texto (serialize() de PHP, XML, etc, etc)

En general me estoy inclinando hacia AMFPHP, incluso por las desventajas, ya que eso es a lo que estoy acostumbrado. ¿Alguna razón por la que debería considerar cambiar a otra cosa?

Respuesta

8

Si desea tener una comunicación rápida y eficiente, le recomiendo que se quede con un AMF protocol en lugar de un formato personalizado REST o JSON.

ZendAMF no es realmente muy confuso. Mire el tutorial de introducción en GotoAndLearn, es bastante simple.

Y para que lo sepas, some of the developers de AMFPHP se trasladó a trabajar en ZendAMF. Entonces, en cierto sentido, ZendAMF es la continuación de AMFPHP.

0

En todos los proyectos relacionados con Flash y PHP backend, trabajé con solicitudes AMFPHP o XML.

AMFPHP simplifica realmente entendiendo la aplicación para el mantenimiento futuro, aunque ata todo a esa tecnología específica e implica una cierta sobrecarga adicional en el lado del servidor - para crear todas las clases necesarias.

Según XML, bueno, lo que obtienes aquí son los servicios web REST estándar y no depende de Flash (también puedes extraer datos de una aplicación de escritorio, mientras que usando JSON o cualquier otra tecnología depende de los navegadores no permiten eso).

Si quiere un 100% de "soporte" futuro, entonces le recomendaría lo que no necesita ningún tipo de soporte: XML.

+0

¿De qué manera depende json el navegador? – rick

+0

Me siento tentado de menospreciar a cualquiera que mencione REST nuevamente. Flex no puede hacer REST en absoluto sin utilizar un reemplazo para la API de comunicación de Flash. – Samuel

+0

@rick: lo que quise decir es que JSON requiere un navegador para funcionar. Si está trabajando con una aplicación de escritorio, tendrá problemas para acceder a ese servicio web. – Seb

1

No puedo decirles lo mejor (porque de todos modos es algo subjetivo), pero lo que puedo hacer es contarles acerca de un proyecto mío reciente.

Dado que esta era una aplicación web muy rica, y las solicitudes de datos al servidor serían frecuentes, quería asegurarme de que el tamaño de las solicitudes fuera lo más pequeño posible. Esto significa elegir JSON como el formato.

A continuación, debido a la naturaleza de la aplicación y al hecho de que mis desarrolladores de flash/flex estaban a 1000 millas de distancia, necesitaba una API que fuera simple y sin estado. Esto finalmente nos llevó a HTTP + REST.

Por lo tanto, la capa de comunicación de mi aplicación es un simple conjunto de Zend Framework alimentado de los recursos REST con URIs como

user/10 
review/15 
location/8/reviews 

Todos ellos JSON retorno. También hay un formato JSON común para todos los errores (las excepciones quedan atrapadas y convertidas en objetos JSON) para que el cliente flash pueda manejar fácilmente la falla.

+0

Gracias por la entrada. La ventaja de AMF frente a JSON es que se trata de un protocolo binario, por lo que en realidad será más eficiente que JSON en términos de tamaño de datos y velocidad de codificación/decodificación. – davr

+0

Siempre puede trabajar con contenido gzip, por lo que quizás desee apegarse a JSON, que es más fácil de depurar, AMF a menudo requiere un proxy web como Charles para la depuración. – Seb

+0

Me siento tentado de menospreciar a cualquiera que mencione REST nuevamente. Flex no puede hacer REST en absoluto sin utilizar un reemplazo para la API de comunicación de Flash. – Samuel

2

ZendAMF Buena lectura corta - http://theflashblog.com/?p=441

Para mí esto es pan comido. El framework Zend es uno de los mejores frameworks php disponibles, y ahora puedes hablar con clientes Flash. Termine con el soporte de Adobe, eso es un trato hecho en mi libro.

Alternativas:

WebORB para php http://www.themidnightcoders.com/products/weborb-for-php

AMFPHP http://www.amfphp.com Si usted lee la URL anterior, probablemente sabrá por qué esto ya no está en mi radar.

-2

"Si usted quiere tener una comunicación rápida y eficiente, le recomiendo quedarse con un protocolo AMF"

Y si desea una comunicación rápida, eficiente y generalizada, voy con JSON. Luego, su servicio web estará disponible para flashear, ajax o solicitudes HTTP regulares.

+0

A) Esto debería ser un comentario a la respuesta de John. – Samuel

+0

B) AMF se serializa a binario, no ASCII, por lo que será más rápido y más eficiente. Y AMF le permite pasar objetos fuertemente tipeados de un lado a otro entre su backend y frontend, automáticamente. Me gustaría ver que JSON haga eso – Samuel

+0

La verdad es que las diferencias de rendimiento entre JSON y AMF son insignificantes. No dije que json fuera más rápido, solo rápido. Cualquier objeto php se puede expresar con JSON. Php está tipado dinámicamente. Explica qué quieres decir con "objetos fuertemente tipados". – rick

1

Si no está utilizando un framework como Zend, el AMFPHP normal sigue siendo excelente, aunque solo sea por su simplicidad. Creo que si te sientes cómodo con esto, ¿por qué no lo haces? La cuestión del papel de estas interfaces AMF es que realmente no necesitan hacer demasiado, y lo que AMFPHP tiene en el mapeo de clases, el análisis de conjuntos de registros en ArrayCollection, un gran rendimiento ... incluso funciona bien con XML, ya que se comprime El navegador de servicios combinado con Charles me ha cubierto también.

No he podido dar mucho sentido a cómo el esfuerzo de ZendAMF se relaciona con el AMFPHP original. Mientras puedo excavar, solo digo que al seguir la lista de correo de AMFPHP en Nabble, leer el blog de Wade Arnold ... simplemente no está del todo claro.

+0

Sí, he usado AMFPHP desde hace mucho tiempo, solo estoy volviendo a visitar esa opción, ya que el futuro de AMFPHP no es del todo claro para mí, y tal vez se haya escrito una nueva/mejor biblioteca/portal en los últimos años AS3 fue presentado. Pero en este momento parece que quedarse con AMFPHP es el mejor – davr

0

XML en PHP puede ser mucho más simple con SimpleXML.

Solo usaría JSON como devolución para llamadas simples en contra de su API de PHP.

+0

¿Por qué el voto a favor? –

1

Debería considerar usar Zend AMF. El Zend Framework está diseñado para ser un marco de selección y elección, por lo que es completamente correcto seleccionar un único componente (en este caso, Zend AMF) para su aplicación.

Zend AMF es extremadamente fácil de usar.Todo lo que tiene que hacer es especificar las funciones/clases que desea exponer y especificar el mapeo de clase para sus clases de acción-script. Todo lo demás es bastante transparente.

0

Definitivamente me decantaría por WebORB. Lo usé con .NET en un trabajo anterior que tuve y fue un placer codificarlo. Su facilidad de uso y su consola de administración bien pensada lo hacen muy rápido de aprender, y su documentación es muy completa; Sé que es tentador quedarse con AMF solo porque es lo que ya sabes, pero creo que vale la pena darle una oportunidad a WebORB.

Eche un vistazo a este screencast para la generación Actionscript con PHP, es bastante elegante.

Saludos.

+0

El screencast muestra cómo usar la generación de actionscript ... pero no por qué, o qué ventajas da sobre hacerlo a la antigua. ¿Es solo para que obtengas autocompletar en tu editor de código para servicios remotos? – davr

+0

Además, hay una sintaxis ligeramente mejor. Por ejemplo, con AMFPHP y el uso de las clases integradas Flex remoting, podría hacer 'service.myCoolMethod.call ("hello")' y con weborb 'service.myCoolMethod ("hello")' ... así que supongo que guardas un poco mecanografía. – davr

0

PHP tiene una muy buena función serialize(), por lo que para un proyecto reciente que hice (puntajes altos para un juego), utilicé Sephiroth's Serializer. Hace que la serialización en el lado de Flash sea casi tan fácil como lo es en PHP. El serializador también trata con tipos de datos (a diferencia de json/xml) como AMF.

Desventaja: no es tan compacto como AMF, pero eso no es nada que la compresión gzip no pueda manejar.

0

AMF tiene una ventaja muy situacional. Si estás buscando transferir Objetos grandes y complejos, ve con AMF. Pero poco sabe la gente sobre los gastos generales que AMF conlleva cuando transfiere objetos pequeños. Si solo está transfiriendo un objeto con 3 propiedades, el uso de AMF puede triplicar el tamaño de su carga útil.

En una nota lateral, soy un gran defensor de la arquitectura RESTful. Como JSON y AMF son solo representaciones, puede compilar un servicio REST que acepte ambas y negociar la representación real con su cliente en tiempo de ejecución.

+0

AMFPHP en realidad tiene una interfaz JSON y AMF. Esto es lo que estamos usando (una versión anterior de AMFPHP, no sé qué pasa con las versiones más nuevas) – davr

Cuestiones relacionadas