Bitácora del Desarrollador: Ajax
Mostrando las entradas con la etiqueta Ajax. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Ajax. Mostrar todas las entradas

lunes, 3 de setiembre de 2007

Ajax, límites en conexiones concurrentes

Como todos ya sabemos, AJAX es acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML). Dicha asincronía consiste en la comunicación asincrona con el servidor en segundo plano. Pero esta comunicación tiene limitaciones en cuanto al numero de conexiones simultaneas.
En el caso de HTTP 1.1; por defecto los browsers limitan a dos conexiones simultaneas a un mismo servidor o proxy según recomendaciones de la especificación de HTTP 1.1 (RFC2616).
En el caso de HTTP 1.0, por defecto son cuatro conexiones.

Por lo tanto, cuando usamos las técnicas AJAX, estamos sujetos a estas limitaciones porque usamos como base el browser, no importando si usamos una librería que nos ayude a hacer peticiones tales como XMLHttpRequest, Ajax.NET, AjaxPro, etc. porque la limitante es el browser.
He leído en muchos blogs de personas que hablan de concurrencia y muestra ejemplos, pero ninguno de ellos contempla esta situación. ¿Será que hasta ahora muy poca gente se habrá dado cuenta de este problema?

En condiciones normales, al disparar varias Calls de forma asincrónica, se ejecutará las dos primeras y las restantes quedaran en standBy hasta que una de las dos finalice.

Veamos la siguiente imagen para explicarlo de una forma más gráfica.


Lamentablemente esto es así, pueden probarlo. Lo que no está claro, por que la especificación HTTP recomienda estas limitaciones, siendo que esto afecta toda la navegación, inclusive imagenes y demás elementos.

¿Entonces que podemos hacer para solucionar el problema de concurrencia cuando implementamos Ajax en nuestra aplicación Web?

Para dar solución al límite de request simultáneos desde un mismo cliente, optaremos entre dos soluciones poco felices;

  • Modificar la registry del cliente.

  • Podemos hacer invocaciones a diferentes servidores o mismo servidor con diferente DNS.

Modificar la registry en el cliente normalmente es una soluciones poco viables -valida para soluciones en Intranet o ambientes controlados-.
Para ello es necesario agregar los siguientes registros en la registry del cliente;
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

MaxConnectionsPerServer REG_DWORD (configuración predeterminada 2) Establece el número de solicitudes simultáneas en un Single servidor HTTP 1.1

MaxConnectionsPer1_0Server REG_DWORD (configuración predeterminada 4) Establece el número de solicitudes simultáneas en un Single servidor HTTP 1.0

Nota: Modificar el numero de solicitudes simultanea a un servidor impactará para todo el contenido navegado dentro del browser. Estos valores se contienen para un usuario concreto y no tendrán efecto en otros usuarios que inician una sesión en el equipo.


Por otra parte, la solución mas viable sería hostear las páginas que se consultarán de forma asincrónica en otro servidor, o en otro WebSite dentro del mismo server. Para ello debemos contar con varios DNS tipo A.
Es decir que con dos DNS tipo A, podemos hacer hasta cuatro invocaciones simultaneas de forma asincrónica (HTTP 1.1).

Aquí puedes descargar un ejemplo donde se hacen invocaciones asincrónicas utilizando XMLHttpRequest, donde podrás evaluar los tiempos de respuesta de cuatro Calls lanzados simultaneamente.

Implementando una de las dos soluciones anteriormente mencionadas, la ejecución de Calls será de la siguiente manera;




Autores: Sebastián Dopico, Diego Osores, Neri Custodio.

[http://support.microsoft.com/kb/183110]
[http://www.ajaxtoolbox.com/request/examples.php]

sábado, 1 de setiembre de 2007

Libro: Ajax Design Patterns

Esta semana comencé a leer el libro [Ajax Design Patterns]. Como su nombre lo dice trata patrones de diseño utilizados en técnicas Ajax de un modo general. 

El libro tiene un nivel de dificultad medio. Está muy bien diagramado, permitiendo que el lector logre una lectura ágil, dinámica y clara, sobre temas precisos y cotidianos. 
Un libro en el que se puede encontrar la información buscada fácilmente y de forma claramente estructurada. 
Muy recomendable; principalmente para aquellos que suelen esperar a que ajax.net -o similar- publique un nuevo control en el toolkit que solucione sus problemas, comiencen a descubrir como realmente funciona esta técnica... [Ajax Design Patterns]

jueves, 5 de julio de 2007

Generar imágenes del tipo Loading para Ajax

Una idea simple y muy útil. AjaxLoad pone a disposición un sitio para generar imágenes del tipo Loading usadas en la implementación de funcionalidades anacrónicas o Ajax.
El sito cuenta con una serie de estilos de imágenes loadings donde podemos seleccionar colores de fondos y demás variaciones...

Muy practico lo de AjaxLoad.

[http://www.ajaxload.info/]