Diferencias de Callback y Ajax


No estoy muy lejos de la verdad cuando afirmo que estamos viviendo un cambio de época en el desarrollo Web. Estamos a punto de abandonar el viejo modelo de aplicaciones para adoptar uno totalmente nuevo. El viejo modelo se basa en la presunción de que los navegadores funcionan enviando formularios de petición a los servidores y recibiendo páginas a mostrar. En el nuevo modelo, el navegador envía peticiones individuales de datos, recibe datos, los utiliza para actualizar la página mostrada: más o menos, lo que pasa hoy con las aplicaciones cliente/servidor, aplicaciones de dos capas.

Los “script callbacks” de ASP.NET y Ajax.NET son dos formas de construir páginas ASP.NET que solicitan datos a servidores remotos y actualizan la página actual. La primera diferencia clave es que Ajax.NET está disponible para ASP.NET 1.x, mientras que los “script callbacks”, son una característica específica de ASP.NET 2.0. Funcionalmente hablando, son equivalentes, -ambos usan el objeto subyacente XmlHttpRequest para ubicar llamadas “out-of-band” (remotas, si se quiere) al servidor, y recoger algunos datos de respuesta. Ambas usan Javascript de cliente para actualizar la página. Las diferencias existen en las siguientes áreas:

  • El código necesario para iniciar la operación remota.

  • Los modos de identificar el código ejecutable de servidor a invocar.

  • El formato de los datos devueltos.

Ambas librerías requieren un manejador de eventos de cliente para ejecutar código. En ASP.NET Script Callback, este código es generado por el servidor e inyectado en la página cliente como parte del proceso de generación y servicio de páginas a peticionarios. En Ajax.NET, una vez que hemos referenciado y configurado la librería, simplemente llamamos a un método en un objeto Proxy creado dinámicamente. Este objeto es creado para nosotros por la parte servidora de la librería, con tantos métodos como existan en el servidor y puedan ser llamados por el cliente. El código de estos métodos Proxy sencillamente prepara una llamada remota al servidor, en buena parte, de la misma forma en que funcionan las clases Proxy de los Servicios Web.

En ASP.NET Script Callback, un cliente puede llamar solamente a la página o uno de sus controles. La página (o el control) debe implementar una interfaz particular (ICallbackEventHandler). El servidor acepta los métodos y devuelve una cadena. Lo que empaquetes en esa cadena da exactamente lo mismo. En Ajax.NET puedes llamar a cualquier método del servidor definido en la clase de la página con tal de que haya sido marcado con el atributo AjaxMethod (Otra similitud con los Servicios Web ASP.NET).

Los métodos de Ajax.NET pueden devolver virtualmente cualquier objeto para el que exista un mecanismo de seriación en Javascript. Este mecanismo, transforma el objeto .NET en una clase Javascript e inyecta su definición en la página cliente, de forma que la otra función Javascript pueda llamarla. La librería de Ajax.NET suministra mecanismos de seriación para unos cuantos tipos de datos, colecciones y objetos ADO.NET utilizados frecuentemente.

En suma, Ajax.NET consigue un código más legible y es -en general- más fácil de configurar, a pesar del trabajo de implantación. ASP.NET Script Callbacks integra la llamada en el ciclo regular de ida-y-vuelta, lo que, para mí, es más una mala que una buena noticia. Significa que el ViewState tendrá que moverse (aunque no sea usado por el servidor) y además algún trabajo extra. Ajax.NET opta por una aproximación al estilo RPC (Remote Procedure Call) – envía la llamada para ejecutar el código y vuelve. Mi opinión desapasionada es que Ajax.NET es preferible a ASP.NET Script Callbacks. Sin embargo, la llegada de Atlas en un futuro cercano, puede cambiar las cosas. Permanezcamos atentos.




Tomado de MSDN

NightWish