Concurrencias y Ajax

diciembre 3, 2009 Publicado en Software y Hardware
Etiquetas:

La fortaleza que le ha valido a Ajax su puesto de supremacía entre las tecnologías de mayor crecimiento en Internet es la posibilidad de modificar el contenido de una página sin tener que refrescarla. Implementar un sistema con Ajax para actualizar la información de una página no representa mayores dificultades cuando se hace un único llamado, pero cuando se hacen múltiples comunicaciones, muchas de ellas sin esperar acuse de recibo, la situación requiere de algún método para regular las solicitudes.

La técnica convencional para regular el paso entre procesos es la declaración de un semáforo, un registro con el que los procesos determinan cuándo un recurso está siendo empleado y en qué momento está libre.

Para referencia presento a continuación la clase Semaphore implementada dentro del script del plugin minimax.

Antes de seguir con la implementación del semáforo hay que mencionar la capacidad que tiene Javascript para pasar por referencia un objeto en un llamado a una función, es decir, si lo que se envía en el llamado a la función es una instancia de una clase, cualquier modificación que se haga dentro de la función a dicha instancia se verá reflejado en la instancia con la que se llamó la función. Es decir, la instancia dentro de las variables con que se llama a la función y la instancia dentro de la función son la misma.

Usando esta capacidad se puede definir un semáforo común para las instancias de una misma clase. No olvide agregar la definición de la clase Semaphore antes de esta nueva clase.

El resultado de este script será una ventana con la leyenda «El semáforo lo están usando 3 instancias», lo que demuestra que el mismo semáforo ha sido llamado por cada una de las instancias de la clase Car.

Por lo general la idea de implementar un semáforo requiere que todo proceso que haya sido declarado para usarlo postergue su ejecución mientras el recurso que requiere para continuar no esté disponible. Nota: la siguiente función deberá estar dentro de la declaración de la clase Car para que logre su objetivo.

En lo que respecta a Ajax, cada vez que se vaya a iniciar una comunicación con el servidor se debe crear una nueva instancia de XHTMLRequest, porque en algunos motores de Javascript esta clase solo permite hacer un único llamado al servidor.

Para crear una instancia nueva se puede definir un método que pueda ser programada antes de usar open(), que es la función con que toda instancia de XHTMLRequest inicia la comunicación con el servidor.

Puede ver un ejemplo completo con estas técnicas en el script del plugin minimax. Ponga especial atención a la clase Semaphore, la declaración del método startXhr() y el llamado que se hace de él en las funciones me.get() y me.post().

Escriba su comentario