miércoles, 14 de julio de 2010

Servicios web y componentes de cliente

En un post anterior vimos cuales eran los secretos y las consideraciones a la hora de trabajar con el control UpdatePanel.

Sin embargo hay ocasiones en las que un control UpdatePanel no satisface nuestros requerimientos por diversos motivos. De este modo, tenemos otras opciones que nos brinda ASP.NET AJAX como son los servicios web y los métodos web de página.

Un servicio web puede servir a distintos propósitos (no sólo para ayudarnos a la actualización parcial de una página) pero en esta entrada nos centraremos exclusivamente en esa funcionalidad. Siendo así, un servicio web se diferencia de un control UpdatePanel en lo siguiente:

  • Un servicio web no pertenece a una página aspx (a excepción de los métodos web de página aunque no es relevante).
  • Un servicio web (tampoco un método web de página) no lanza el ciclo de vida de una página .aspx.
  • El tamaño del envío y la respuesta de un servicio web es más reducido puesto que sólo hay que enviar unos mínimos datos al servicio y el servicio a su vez sólo devolverá el contenido solicitado.
  • En lo relativo a la representación parcial de una página, un servicio web es utilizado cuando el contenido que queremos actualizar no depende de los datos de la propia página o el contenido es literal (no queremos devolver un control de usuario con comportamiento de cliente ASP.NET AJAX).

Esto último es de vital importancia puesto que a grandes rasgos, un servicio web siempre devuelve texto, sólo texto. Por ejemplo, podríamos devolver el texto que resulta de renderizar un control pero no su comportamiento. De este modo, el servicio web nos devolvería la primera instantánea del control pero al intentar interactuar con el control, la página fallaría porque no conoce el control (no se ha declarado en la página .aspx, ni se ha incluido de forma dinámica a través de la colección de controles de algún otro control contenedor de la página y además si fuera necesario crear un componente de cliente a través de ASP.NET AJAX para su funcionamiento, tampoco se hubieran ejecutado sus scripts requeridos). En definitiva, si vamos por la vía de un servicio web o un método web de página, nuestro principal uso será devolver contenido literal que podremos después inyectar en el DOM de cliente, pero no podemos esperar por ejemplo, devolver un control Tab de ASP.NET AJAX Control Toolkit y que funcionen las pestañas.

Ahora la pregunta final que resolveremos en un siguiente post es ¿Cómo cargar un control que necesita componente de cliente – rutinas de javascript – y conseguir que su carga sea lo más óptima posible (esto es no utilizando un UpdatePanel)?

Un saludo!

No hay comentarios:

Publicar un comentario