Web Services Comprimidos
La idea de este artículo es mostrar como con Flex podemos utilizar WebServices y a su vez comprimir lo que el webservice nos devuelve.
Todos sabemos que una de las principales ventajas que RemoteObject tiene ante WebServices es que al ser un protocolo binario, la información que viaja desde el backend a Flex es mucho menor. Debido a esto empezamos a investigar la posibilidad de "reducir" esa cantidad de información.
Esta claro que la mejor forma de "reducir" la información es comprimiéndola, así que encaramos la investigación por ese lado.
Primero empezamos por Flex y nos llevamos la grata sorpresa que la clase ByteArray tiene el metodo “compress” que realiza la compresión del bytearray utilizando zLib. Como personalmente en .Net tengo experiencia en haber utilizado zLib, nos decidimos por esta opción.
En resumen, los que les voy a mostrar es como comprimir el "response" de un webservice utilizando zlib en el backend (en este caso .NET) y luego descomprimirlo en Flex.
BackEnd (.net)
Primero veamos como comprimir con zLib en .Net.
Para esto lo primero que tenemos que hacer es bajarnos el archivo zlib.dll y copiarlo al system32 de nuestra carpeta Windows o bien al Bin de nuestro proyecto .Net.
Luego de esto debemos escribir una clase que nos ayude a realizar la compresión, puede ser:
Un vez que tenemos esto, en el WebServices debemos comprimir los datos antes de devolverlos. Para esto debemos tener en cuenta dos factores.
1. Para la codificación del string utilizaremos UTF8 en ambos extremos.
2- Los datos deben ir en formato Base64. De esta manera no tendremos problemas con caracteres no imprimibles en SOAP.
Entonces, un WebServcie de ejemplo quedaría así:
Compresión en Flex
Ya tenemos los datos comprimidos en el backend, ahora veamos como descomprimirlo cuando llegan a nuestra aplicación Flex.
Al igual que en el paso anterior, hagamos una pequeña clase AS que nos facilite el uso de la descompresión.
Esta quedaría:
De esta manera, antes de utilizar los datos que provienen de nuestro WebService, nos quedaría descomprimirlos de la siguiente manera:
Conclusión
Para concluir puedo comentarles que actualmente utilizo este método en dos proyectos grandes en los que trabajo y me dio muy buenos resultados, reduciendo significativamente el ancho de banda utilizado a cambio de un pequeño incremento tanto en el Cliente como en el BackEnd para realizar las tareas de compresión-descompresión.
Espero que les sea de interés y lo puedan implementar.
Suerte!!!
Acerca de esta entrada
Usted está leyendo “Web Services Comprimidos,” una entrada de MadeInFlex
- Autor: Fabián Brussa
- URL del Autor:
- http://www.liderafx.com
- Publicada:
- 09.06.07 / 10am
- Categorías:
- .NET
- Entradas relacionadas:
- LiveCycle Data Services 2.5.1
- FZIP: Soporte ZIP nativo en Flash
- Disponible Adobe LiveCycle Data Services 2.5
- Granite Data Services
- Número de visitas:
- 2760


5 Comentarios
Ir al formulario de comentarios | rss (comentarios) [?] | trackback url [?]