Ajax es el estándar de facto para construir RIA (del acrónimo en ingles Rich Internet Application). Es la tecnología soportada por todos los browsers modernos (W3C) y la base de la mayoría de los frameworks JavaScripts (digase prototypejs, jQuery, Dojo o extjs, por nombrar los más conocidos) y de otras tecnologías como Flex, GWT o M$ Silverlight. Ajax ha permitido dar un nuevo enfoque al WWW y está colaborando en la creación de la nueva burbuja de internet con la versión 2.0 de la web. Ha permitido también ver al browser como una plataforma donde se pueden ejecutar aplicaciones complejas que minimizan el esfuerzo del usuario y hace más agradable su uso.
No obstante Ajax no es la única opción. A continuación hablaremos de Comet y WebSocket como opciones substitutas para la contrucción de aplicaciones con interfaces y comportamiento complejos que en el caso de Comet no gozan de la popularidad de Ajax ni se ha convertido en estándar por no tener una espalda empresarial como Microsoft[1], Google o Yahoo!. El caso de Web Socket es diferente por haber nacido como parte de una especificación creada y en desarrollo por parte de W3C.
Comet:
Alex Russell (creador de Dojo[2]) descubre una nueva forma de comunicación ‘no estándar’ entre el browser y el servidor usado por aplicaciones como Google Talk, Meebo o JotLive (ahora de Google) diferente a la tradicional Ajax y decide denominarla Comet como una forma de poder referenciarla a futuro.
La diferencia de Comet con Ajax es que en Ajax, las peticiones de ejecución en el server nacen en el browser (la dirección es la tradicional, del browser al servidor). En Comet sin embargo se abre una linea de comunicación entre el browser y el server, reduciendo la latencia de enviar paquetes desde el browser cada vez que se necesite un requerimiento y permitiendo que sea el server quien envie los paquetes al browser de forma autónoma (la comunicación es bidireccional, ahora el servidor también puede enviar peticiones al browser). A continuación se ilustra la diferencia entre las formas de comunicación del enfoque Ajax vs Comet.
Una aplicación Comet puede enviar datos al browser en cualquier momento, lo que permite crear aplicaciones más “real time” (por ejemplo monitoreo o colaboración online entre usuarios) a diferencia de Ajax donde el browser encola las peticiones enviadas al servidor de forma asíncrona.
Dado que Comet no está contruida sobre la base de comunicación estándar HTTP Request/Response es necesario instalar componentes de parte del server. Apache provee un módulo ‘comet-ready’ en su versión 2.2, existen también soluciones como Twisted (para desarrollos en python), o POE (para perl), la lista aumenta a medida que Comet se convierte en una opción popular.
HTML 5 WebSocket:
Web Socket es la alternativa estándar (escrita desde cero) para la especificación de la versión 5 del lenguaje HTML ( que en su versión expresada en XML se podrá llamar XHTML ) y por tanto con implementación nativa para los browsers que cumplan dicha especificación.
La diferencia que da valor agregado a Web Socket ( a parte de ser estándar ) radica en que provee una conexión duplex entre el browser y el server con una sola conexión TCP/IP (a diferencia de Comet que abre conexiones para cada requerimiento) y por otro lado genera pocos headers HTTP en los mensajes ( a diferencia de Comet que se basa en escribir mucha información en el header haciendo más pesados los mensajes). Además el protocolo de transporte que usa Web Socket puede ser usado en una diversidad de clientes (e.g. JavaScript, Adobe Flex, JavaFX, Microsoft Silverlight, etc.) sin usar transformación de mensajes a diferencia de Comet que usa el protocolo Bayeux o JSON de la parte cliente, requeriendo transformación cuando el server trabaja con otro protocolo como JMS, XMPP o IMAP.
Conclusiones
Ajax no es la única alternativa técnica para la comunicación entre el browser y el server cuando se desarrollan RIA. Existen opciones como Comet ( usadas por aplicaciones como Google Talk, o Meebo ) y el futuro y prometedor estándar Web Socket de la especificación HTML versión 5.0.
1.- Microsoft se acredita la invención de Ajax con su implementación de XMLHTTP a finales de los 90 mientras escribían la interface web del MS Exchange Server 2000.
2.- Dojo fue diseñado con soporte para Comet a traves de su interfaz dojo.io.bind() (Ver Dojo toolkit para más información.)



2 Comentarios
December 15th, 2009 at 12:56 pm
queremos ejemplos!
December 17th, 2009 at 3:02 am
[...] Según se informa en el blog de Chromium, los web sockets están ya disponibles en Google Chrome. La API de web sockets existen de momento como borrador de estándar de HTML5 y permite la comunicación bidireccional entre cliente y servidor. En dicho blog ofrecen ejemplos. Un artículo relacionado se puede encontrar en continuum.cl, Comet y Web Socket. Un enfoque diferente a Ajax: [...]
Deja tu Comentario