2008-10-30 20 views
7

He estado usando Flex por un tiempo y aún no he usado la comunicación remota. Actualmente, mis aplicaciones usan un servicio web que genera xml que utilizo para el enlace de datos.Flex - Remoting vs HTTPService - cuándo usar qué?

¿Cuál sería la ventaja de utilizar la comunicación remota en un servicio web xml en este caso de uso? ¿Existe una guía general cuando debería elegir la comunicación remota a través de los servicios web?

¿Por qué querría utilizar la comunicación remota?

He descargado http://www.fluorinefx.com/, pero aún tienen que hacer ningún retoques reales ...

Gracias.

Respuesta

4

Hablando personalmente uso la comunicación remota porque prefiero AMF a SOAP/XML por la sencilla razón de la velocidad y el tamaño del paquete.

Ted tiene una buena discusión de los méritos relativos de XML frente a AMF here

Algo a tener en cuenta es lo que ya tiene en su lugar en el servidor y en el que cree que el futuro de sus clientes mentiras. ¿Anticipa reemplazar o extender sus clientes? En caso afirmativo, los servicios web son una buena opción arquitectónica. Si se compromete con Flex en el corto/mediano plazo, entonces podrá obtener un mejor rendimiento de la comunicación remota con AMF3 frente a sus servicios web.

P.S. Una vez tuve un enlace a un sitio muy bueno que tenía mediciones del rendimiento relativo de AMF y SOAP. Veré si puedo encontrarlo y publicar un enlace.

P.P.S. here it is, pero parece que no funciona en este momento.

2

El uso del control remoto hace que la transferencia de datos desde un servicio remoto a una aplicación Flash o Flex sea más fácil y más rápida. Al utilizar la comunicación remota no es necesario analizar o deserializar los datos recibidos del servicio. Esto se debe a que los datos se envían a la aplicación en bytecode nativo.

Una de las razones principales para usar la comunicación remota es que es más liviana que un servicio XML. Esto se debe a que XML es un mal formato de memoria, especialmente para grandes conjuntos de datos. XML es excelente como formato de intercambio, pero una vez dentro de la aplicación, debido a las etiquetas detalladas y al posible espacio en blanco, es muy probable que consuma más memoria que los valores expresados ​​en bytecode nativo.

+0

Esto es simplemente incorrecto en todos los sentidos. Remotamente entre Flash y Java, implica la serialización de objetos Flash como XML, pasándolos al servidor Java, que luego deserializa ese XML en objetos Java. El bytecode nativo no entra. –

+1

Me gustaría diferir. Si está utilizando un servicio que devuelve XML que debe ser analizado, entonces no está realmente aprovechando lo que la comunicación remota puede hacer por usted. Use un servicio remoto que utilice AMF. AMF es información binaria que se transfiere al cliente en lugar de XML. –

+0

Claro que los datos pasados ​​de ida y vuelta no necesitan ser XML, y como dices, los datos en el caso de AMF son binarios. Sin embargo, no es un código de bytes Flash. Se trata de datos serializados, es decir, los objetos tienen que estar codificados en un extremo y decodificados en el otro extremo. Los datos deben ser deserializados. –

4

Los servicios web son excelentes si solo está utilizando transferencias de datos simples entre el cliente y el host. Usted forma el mensaje XML, lo envía al servidor y obtiene un mensaje XML simple, de vuelta. Luego lo deserializa y actúa sobre los datos en consecuencia. El soporte AS3 para XML es excelente, puede usarlo para comunicarse con cualquier servicio de datos y usted tiene el control total en el extremo del cliente.

Donde los servicios web caen es cuando las estructuras de datos pasadas de ida y vuelta se vuelven demasiado complejas, o cuando el número de estructuras de datos diferentes pasa de largo a demasiado grande. Remoting supera estos problemas al proporcionar un marco pesado que maneja la serialización por usted. Defina su .NET/PHP/Java o cualquier clase, y el framework debería proporcionar herramientas para generar las clases AS equivalentes. De esta forma, puede enviar estructuras de objetos complejos hacia adelante y hacia atrás sin necesidad de saber cómo se serializan los datos. Como no necesita saber, puede comprimir la estructura para que no sea legible por personas, o incluso utilizar datos binarios para que también aumente la velocidad.

Sin embargo, la conexión remota no es adecuada para el protocolo de servidor de pequeña escala o variado.Debe sincronizar las estructuras de clase entre el servidor y el cliente; solo puede comunicarse con un servidor remoto compatible y el marco agrega sobrecarga al tamaño y la complejidad del cliente.

No hay una respuesta correcta sobre qué usar, cuándo. Ambos tienen ventajas y desventajas. Como regla general, use servicios web para cosas simples y remotas para cosas complejas (que es un consejo bastante vago)

0

Si planea usar los datos en otras aplicaciones (lo que significa que el suyo es solo una de varias interfaces)) podría usar el XML; de lo contrario, ahorrará algo de tiempo mediante el uso de la comunicación remota.

0

También debe tenerse en cuenta que, una vez que se inicia en esta área, un buen analizador de protocolo por cable es invaluable. Dos escritos específicamente para protocolos flash son Charles y Service Capture. Acabo de comprar Service Capture, y he estado muy contento con él. También tiene una gran herramienta de "simulación de ancho de banda" que ayudó a ver cómo se vería mi precarga en conexiones de ancho de banda más bajo.

Marcus

1

This is a really good live benchmark test que compara la interacción remota con AMF Servicios Web y los servicios HTTP. Incluso puede descargar el código fuente para ejecutar esta prueba en su propio entorno.

También estoy de acuerdo con algunas de las publicaciones anteriores que AMF remota realmente brilla cuando está ejecutando grandes conjuntos de datos. Para conjuntos de datos más pequeños, probablemente no verá una diferencia significativa.