En el mundo de las aplicaciones web nos encontramos con dos grandes tipos de ellas que, además, siguen una evolución histórica.
En los inicios de Internet las comunicaciones se basaban en el modelo cliente – servidor en el que el usuario realizaba una consulta (cliente) y el servidor respondía a esta petición.
Este comportamiento se conoce como comunicación síncrona y por tanto a aquellas aplicaciones que siguen este modelo se les denomina aplicaciones síncronas.
Aplicaciones Síncronas y sus limitaciones
Las aplicaciones síncronas, por su diseño, presentan una serie de limitaciones que con el paso del tiempo y la evolución del uso y la capacidad de la red, han terminado por ser determinantes en el desarrollo de tecnologías alternativas.
Una de estas limitaciones involucra la actualización de los datos que se muestran en pantalla. Por ejemplo, considera una aplicación que muestra los precios de las acciones de un mercado bursátil cualquiera. Idealmente, la aplicación debe ser capaz de actualizar los valores en un determinado intervalo de tiempo: 10 segundos, por poner un caso. Cada 10 segundos el navegador enviaría una petición al servidor para obtener la versión más actualizada de los datos. El problema obvio que surge de este modo de funcionamiento es que existirá un lapso de tiempo en el que los datos estén desactualizados y esto puede suponer una merma importante de las prestaciones de una aplicación.
En estos casos y para superar estas limitaciones, las aplicaciones síncronas están siendo sustituidas por lo que se conoce por aplicaciones asíncronas.
Aplicaciones Asíncronas
Las aplicaciones asíncronas permiten la notificación de un cliente cuando un evento ocurre en la parte del servidor. De esta forma, las aplicaciones asíncronas pueden actualizar su información de forma mucho más eficiente y rápida que las síncronas.
Para permitir un comportamiento asíncrono la comunicación se produce en paralelo (simultáneamente) con el flujo síncrono (principal).
Aunque existen numerosos tipos de comunicaciones asíncronas, nos encontramos con tres principales: poll, long-poll y push.
Comunicación asíncrona POLL
El navegador envía las peticiones HTTP al servidor en intervalos regulares. El servidor responde con actualizaciones. Esto permite al sistema actualizar intermitentemente la aplicación dentro del navegador.
Comunicación asíncrona LONG-POLL
El cliente genera una petición HTTP hacia una dirección conocida del servidor. Cuando el servidor tiene una actualización, responde con un mensaje HTTP. Inmediatamente después de recibir la respuesta, el cliente genera una nueva petición HTTP.
Comunicación asíncrona PUSH
El cliente abre una conexión con el servidor enviando una petición HTTP a una dirección conocida del servidor. El servidor entonces envía una respuesta que aparentemente nunca termina lo cual implica mantener la comunicación siempre abierta. Cuando es necesario, el servidor envía un sub-mensaje de actualización al cliente a través de la conexión abierta. Durante el tiempo en el que la conexión está abierta, el servidor envía mensajes PING al cliente para prevenir que éste cierre la conexión por timeout.
Una interacción más natural.
Con la llegada de este tipo de aplicaciones asíncronas, el usuario se relaciona con las aplicaciones de una forma mucho más natural. Esto termina por permitir desarrollar soluciones que se integran mejor y tienen una respuesta más eficiente en determinados entornos donde la información es un bien valioso y la rapidez de respuesta una virtud necesaria.