domingo, 30 de octubre de 2011

Apache Mina y Apache AsyncWeb

Mediante una serie de técnicas llamadas Comet, puedes hacer una aplicación que envíe datos al usuario en tiempo real; es decir, que el navegador mantenga la conexión siempre abierta y reciba continuamente nuevos datos cuando los haya. Para servidores y aplicaciones clásicas que no estén preparadas para mantener muchas conexiones, la forma más sencilla es solicitar desde el navegador un cada X segundos nueva información (polling). Si tenemos muchos usuarios a la vez abriendo conexiones y haciendo peticiones a la BD nos encontramos con que nuestro servidor no da más de sí y deja de atender peticiones. Un ejemplo de polling clásico sería realizar peticiones mediante AJAX a un script PHP que devuelve nuevos datos en JSON cada 3 segundos y actualiza la tabla de novedades.

En el desarrollo web, Comet es un neologismo para describir un modelo de aplicación web en el que una petición HTTP mantenida abierta permite a un servidor web enviar datos a un navegador por Tecnología Push, sin que el navegador los solicite explícitamente. Comet es un término paraguas de múltiples técnicas para conseguir esta interacción. Todos estos métodos confían en características incluidas por defecto en navegadores, como JavaScript, en lugar de sobre plugins no disponibles por defecto. Existen frameworks en java que nos permiten hacer coment tenemos a Netty de Jboss, Atmosphere y Apache Mina.

Vamos a ver como funciona y nos permiten hacer coment Apache Mina. Apache Mina es un framework que nos permite hacer aplicaciones escalables y performantes basadas en network. Este framework provee una api asincrona para varios tipos de transportes y protocolos tcp/ip o UDP/ip via Java Nio.

Apache AsyncWeb que es parte de Apache Mina, rompe con la forma petición-respuesta de los servidores webs más usados. Esto le permite ser altamente escalable y capaz de soportar un rendimiento muy alto incluso en escenarios de alto procesamiento de latencia.
Una Api simple permite crear fácilmente servicios asincronos y integración con spring permite una configuración simple con gran flexibilidad. AsyncWeb permite también aplicar filtros a todas las requests.

Dejo links:
http://mina.apache.org/
http://mina.apache.org/asyncweb/