ASP.NET Ajax Beta 1: Cambios de la version Atlas.

Hoy día iniciamos la migración de uno de nuestros aplicativos basados en Ajax, realmente bastante tedioso, se han dado cambios significativos para esta versión beta, es cierto que hay muchas mejoras pero el trabajo de migración se ha tornado medio pesado, aca van algunas de mis apreciaciones:

PageMethods: Antes hacer llamadas a métodos marcados como [WebMethod] dentro de un formulario web, era muy simple, yo habia utilizado esto para hacer un render de ciertos controles de usuarios de los cuales obtenia su codigo HTML que era devuelto al cliente para su renderización (hacia unas 4 llamadas en paralelo lo cual mejoraba muchisimo la performance de carga además de solo renderizar lo necesario). Ahora me encontre con varios problemillas con esta utilidad, me parece que hay varios bugs involucrados tal como lo menciona uno de los miembros del equipo de ASP.NET aca en un post:

http://blogs.msdn.com/sburke/archive/2006/10/21/hint-components-that-use-web-services-with-asp-net-ajax-v1-0-beta.aspx

Asi que frente a esto opté por la posibilidad de realizar este trabajo a través de un servicio Web.

La opción de usar servicios Web ha sido mejorado muchísimo, si notamos el proxy que se generaba anteriormente a lo que se genera en esta versión notaremos que se ha incluído el patron prototype para su implementación. eso es muy interesante para opciones de depuración que podrían venir en Orcas, ahora los servicios web cambiaron tambien en algo, debemos agregarle en la cabecera lo siguiente:

[Microsoft.Web.Script.Services.ScriptService()]
public class TiempoService : System.Web.Services.WebService {

Ahora si hablamos del control principal de ASP.NET Ajax, el ScriptManager también a cambiado en muchos aspectos tal como he ido comprobando en este proceso de migración que venimos realizando:

* Por defecto la propiedad  "EnablePartialRendering" está en true, esta funcionalidad nos ayuda con el manejo del UpdatePanel 🙂 asi que si uds no trabajan con este control y en vez de ellos utilizan llamadas directas a un servicio web les recomiendo que le pongan el valor de false.
* Ya no existe el "ErrorTemplate", mas bien se ha reemplazado por: AsyncPostBackErrorMessage(esto me parece muy interesante aunque me hizo rabiar un poco al tener que borrar mis errorTemplates 🙁 ).

Ahora si ya vamos al uso de los controles partes del AjaxControlToolkit veremos tambien cambios:

Por ejemplo:

Antes:
<AtlasToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server">
<AtlasToolkit:ModalPopupProperties ID="mpp" TargetControlID="hypModal" PopupControlID="pnlPopup" BackgroundCssClass="fondo" />
</AtlasToolkit:ModalPopupExtender>

Despues:
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" BehaviorID="mpp"
PopupControlID="pnlPopup" TargetControlID="hypModal" BackgroundCssClass="fondo">
</ajaxToolkit:ModalPopupExtender>

Primeros cambios interesantes, el ID que se definia dentro de el ModalPopupProperties ahora a sido reemplazado por el BehaviorID asi que no se preocupen si han realizado programación a través de javascript de estos objetos aún estan disponibles solo que se han reordenado las propiedades y renombrado algunas :).

Por ejemplo yo antes para mostrar el popup hacia lo siguiente(Usando el ID):
$object("mpp")._show();
Ahora debo hacer:
$find("mpp").show();

(Upps, notarán que también ha cambiado el nombre de algunos métodos 🙁 más trabajo de migra)

y para terminar este post, algo respecto a la clase PageRequestManager (encargada de manejar las llamadas asincronas, muy utilizada para manejar eventos al iniciar y terminar un partial postback) tambien ha tenido algunos cambios.

Por ejemplo antes para mostrar el popup al iniciar una llamada utilizando el updatePanel usaba lo siguiente:

function pageLoad()
{
var prm = $object("_PageRequestManager");
prm.propertyChanged.add(onRequestChange);
}

function onRequestChange(sender, eventArgs)
{
if (eventArgs.get_propertyName() == "inPostBack")
{
if ($object("_PageRequestManager").get_inPostBack())
{
$object("mppModal")._show();
}
else
{
$object("mppModal")._hide();
}
}
}

Ahora ha cambiado a lo siguiente:

function pageLoad()
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler)
}

function BeginRequestHandler(sender, args)
{
$find("mpp").show();
}
function EndRequestHandler(sender, args)
{
$find("mpp").hide();
}

Wow muchos cambios pera a la vez muy interesante, muy emocionado hasta ahora como con juguetito nuevo 🙂

Iré contandoles más novedades de ASP.NET Ajax Beta en el transcurso de la semana,

Un saludo desde perú,

Ivan Mostacero

P.D. El tamaño de las librerías js ha disminuido bastante, y solo se envía lo necesario al cliente, algo muy esperado que lo comprobe claro usando Fiddler 🙂 en mi caso solo está enviando un promedio de 10k en librerias js al cliente, muchiiiisimoo mejor que lo que se enviaba en la versión anterior.

4 comentarios en “ASP.NET Ajax Beta 1: Cambios de la version Atlas.”

  1. Gracias Iván por el aviso, de paso quiero decir que hay algo (aun no se el qué) que añaden al Visual Web Developer, ya que los controles de Ajax ahora tienen (en diseño) un degradado… no creo que solo hayan cambiado eso del diseñador… ya os contaré cuando sepa que és…

    Saludos

  2. Hola.

    Muchas gracias por explicar las diferencias entre diferentes versiones.

    Quería preguntarte si te suena porque puede ser que no me aparece el control ModalPopupExtender para agregar a la pagina aspx. Lo he intentado tb desde dentro de la pagina poniendo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *