El AJAX Framework de Microsoft facilita enormemente la mejora de rendimiento de aplicaciones ASP.NET, y hace prácticamente transparente el uso de AJAX al desarrollador.
No obstante, es necesario seguir unas pautas de desarrollo, para que estas ventajas no se acaben convirtiendo en problemas.
Para estar seguros de que nuestra implementación es correcta, podemos utilizar un http sniffer para comparar la cantidad de datos transmitidos, y el número de requests realizados.
Errores comunes que hay que evitar
- Crear updatepanels que abarquen toda la página
- Hay que añadir updatepanels que engloben, a ser posible, sólo un control, y sólo cuando sea necesario (el control genera un postback que queremos gestionar asíncronamente, u otro control que ha generado un postback refresca este). Un claro ejemplo serían los dropdownlist dependientes unos de otros: País -> Región -> Ciudad -> …
- En el caso de que sea necesario añadir un updatepanel que contenga más updatepanels anidados, se establecerá siempre la propiedad ChildrenAsTriggers = false. Esto hará que los updatepanels anidados no envíen la información al servidor cuando el “padre” lo haga.
- Crear updatepanels con la propiedad UpdateMode = “Always” (o no establecer la propiedad, que viene a ser lo mismo)
- Hay que establecer SIEMPRE la propiedad UpdateMode = “Conditional”. Eso hará que la información del updatepanel se envíe al servidor asíncronamente sólo para los eventos que especifiquemos. Sinó lo hará para todos.
- No especificar los triggers de eventos asíncronos explícitamente en el HTML
- Especificar los triggers en el HTML asegura una velocidad de respuesta más rápida. En ocasiones, no obstante, puede ser necesario refrescar el contenido del UpdatePanel desde el servidor, lo haremos con el método Update() del control. Por ejemplo: miupdatepanel.Update();
- Usar AJAX para cualquier cosa
- En ocasiones es más efectivo utilizar JavaScript. Por ejemplo, al seleccionar un checkbox se debe habilitar/deshabilitar cierto control. Esto puede hacerse fácilmente de forma directa con javascript. Recomiendo usar el UpdatePanel sólo cuando es necesario ir al servidor a realizar alguna lógica (p. ej. obtención de datos).
Para hacer comparaciones de rendimiento, siguiendo o no algunos de estos consejos, puede utilizarse un HTTP Sniffer, como la versión gratuita de HTTPWATCH:
http://www.httpwatch.com/download/
Enlaces relacionados con la optimización de MS AJAX Framework
http://msdn.microsoft.com/en-us/library/bb398822.aspx
http://www.asp.net/learn/ajax-videos/
http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/
http://encosia.com/2008/04/23/why-you-should-not-place-your-whole-site-in-an-updatepanel/
Mejora del rendimiento mediante configuración global:
http://lancezhang.wordpress.com/2008/11/15/aspnet-ajax-performance/