Seguro que recuerdas que no hace mucho estuve haciendo en el blog una serie sobre AJAX (1, 2, 3, 4, 5, 6 y 7) "super-a-pelo", es decir, usando sólo JavaScipt y tu imaginación, nada de Atlas y compañía. La verdad es que tuvo bastante éxito y muchas visitas, referencias, trackbacks, etc...
Viendo que el tema suscita interés voy a continuarlo un poco pero esta vez haciéndolo con una nueva característica que es nativa a ASP.NET 2.0 y que se denomina Script Callbacks. Esto facilita bastante el trabajo con AJAX respecto a hacerlo todo uno mismo, pero aún así sigue siendo más complicado que usar una biblioteca estilo AJAX.NET o la propia Atlas de Microsoft que ahora está en beta. Por este motivo y dado que sigue siendo una técnica algo rupestre denominaré a esta nueva serie como AJAX con .NET: The "a pelo" series ;-)
Bueno, veamos primero un poquito de teoría y en los siguientes post pasaremos ya a la práctica de esta técnica nativa de .NET a la que podremos sacar bastante partido.
La filosofía de los Script Callbacks es la que ya hemos visto con AJAX, es decir: desde el cliente se provoca una llamada al servidor (realizada con XMLHTTPRequest), el cual procesa la petición y devuelve al cliente un resultado textual que es procesado por un método JavaScript construido a tal efecto.
La diferencia principal entre la técnica que nos ocupa y lo que hemos visto hasta ahora es que nos podemos despreocupar totalmente de la complejidad inherente al manejo de XMLHTTPRequest y demás cuestiones, pues se encarga la infraestructura de .NET por nosotros de manera transparente de todo. Además en lugar de llamar a otra página del servidor llamaremos a la misma página (como si fuera un Postback) o incluso sólo a determinadas partes de ésta si implementamos la técnica en un control en lugar de en la página entera. De hecho ya hemos estudiado un caso real de uso de estas técnicas en el artículo "Funcionalidad AJAX en el control GridView de ASP.NET 2.0", en el que se mostraban ya algunos rudimentos de la técnica viendo el código desensamblado del control GridView.
Cómo usar los Script Callbacks
Lo primero que debemos saber es que para sacar partido a esta nueva característica el control o la página que queramos convertir a AJAX debe implementar la interfaz ICallbackEventHandler. Para ello podemos incluir una etiqueta <%@ Implements interface="System.Web.UI.ICallbackEventHandler" %> en el código HTML de nuestra página, o bien mejor (creo yo), hacer que la clase "code-beside" de nuestra página implemente explícitamente dicha interfaz:
Al escribir el nombre de la interfaz tras la definición de la clase veremos que en "Smart tag" asociado se ofrece la posibilidad de que se escriban las definiciones de los elementos de la misma en nuestro código para que podamos implmentarlos (tanto implícita como explícitamente).
Antes de pasar a ver con detalle esta interfaz es preciso señalar que no sólo podremos implementarla en una página que contenga controlos cuyo uso provocará llamadas asíncronas al servidor, sino que podemos crear nuestros propios controles de usuario o controles Web que implmeneten dichas interfaz y que al ser colocados sobre una página provocarán la ejecución en el servidor de sus propias llamadas, diferentes a las de la página, lo cual nos permite un gran nivel de encapsulación.
Mañana hablaré de los miembros de esta interfaz y cómo debemos usarlos en el servidor. Luego veremos la parte de cliente y un ejemplo de uso completo que se podrá descargar desde aquí.