Monday, August 21, 2006

[ASP.NET] Utilizando AJAX


Al realizar una aplicación web utilizando script de servidor debes haber notado que por cada envío de información al servidor, y por tanto intercambio de datos con el cliente, la pagina es recargada en su totalidad, es decir, el flujo de toda la pagina compilada es enviada al cliente, lo que implica tiempo en el viaje de datos por la red, el tiempo de respuesta para el usuario aumenta, por lo tanto la aplicación es menos eficiente que una aplicación de escritorio.

Puedes ver muchos de estos casos en la web, tan solo busca páginas que contengan formularios de registro, en muchos casos te solicitarán tu ubicación, quizás a través de controles de lista desplegable (combo box), si eliges digamos: País Perú, entonces se cargará otro combo box con los departamentos de dicho país, si para llenar dicho combo requiere ir al servidor, entonces verás la página recargarse.


AJAX nace como la tecnología que permite optimizar operaciones como esta, realizando llamadas asíncronas al servidor, solicitando segmentos específicos de la página, por ejemplo, que realice (continuando con el caso anterior de la ubicación) únicamente el envío de información de los departamentos dado que el país seleccionado es Perú, ésto implica transferir solamente una parte muy pequeña por la red en lugar de transmitir toda la página.

AJAX permite entonces lograr una operación mas eficiente de una página web, pero para lograrlo debes combinar el uso de script de cliente con script de servidor, veamos un ejemplo de como lograr esta tarea en ASP.NET 2003:

- Primero debes añadir la librería de AJAX a tu proyecto (Ajax.dll)
- Luego debes registrar a AJAX como un receptor de llamadas a servidor, para ello debes añadir las siguientes líneas en el archivo web.config de tu proyecto:



- Con ello la aplicación podrá procesar llamadas a través de AJAX, pero para que una pagina utilice esta propiedad debe indicarlo explícitamente, indicando estas líneas en el evento PageLoad en el codebehind de nuestra página:



De esta forma ya tenemos la página lista para utilizar AJAX, pero ahora, como lo utilizamos, vamos a ello:

- Para que una función sea tratada por la librería de AJAX debe indicarse (al igual que el caso anterior) explícitamente ésto, añadiendo antes de su declaración las siguientes líneas:

'Registramos el método como compatible con AJAX
_
Public Function f_MiFuncion() As MiValorDeRetorno
...

Ahora, lo grandioso de esto es que nos permite llamar a la función tanto de lado de servidor como de cliente. Para invocar a la función de lado de cliente podríamos utilizar un script como el siguiente:

function MiFuncionJava(...){
var valValida = NombrePaginaAspx.f_MiFuncion();
if (valValida.error != null){
alert("ocurrió un error");
return;
}else { ... }
}

Nota que antes del nombre de la función debes poner el nombre de la página, digamos que la página lleva por nombre frmRegistro, entonces el llamado sería frmRegistro.f_MiFuncion().

AJAX no permite solamente eso, también puede interactuar con estructuras definidas en nuestra arquitectura de servidor, por ejemplo, instanciar un objeto de una clase que tengamos en nuestro proyecto, para ello existen tags que debes ubicar antes de la declaración de la clase para indicar que pueda ser utilizada por AJAX, de forma similar que con el método visto anteriormente.

Como podrás ver, AJAX es una tecnología muy interesante y rica en funcionalidad. Si usas .NET 2005 puedes utilizar ATLAS, que no es mas sino la versión particularizada de AJAX para este framework, y al ser particular para .NET 2005 facilita la integración con tu proyecto, lo cual es un punto a favor para ATLAS. Enhorabuena.

3 Comments:

At 5:01 PM, Anonymous Anonymous said...

Cabe mencionar que con Ajax (Asincronous javascript and XML o algo asi :P) Se pueden diseñar controles sofisticados que son muy agradables para el usuario.

 
At 3:52 AM, Anonymous Anonymous said...

It is useful to try everything in practice anyway and I like that here it's always possible to find something new. :)

 
At 1:02 AM, Anonymous Anonymous said...

I am not going to be original this time, so all I am going to say that your blog rocks, sad that I don't have suck a writing skills

 

Post a Comment

<< Home