Combinando scripts para mejorar el rendimiento de nuestras aplicaciones web gracias a la característica CompositeScript del ScriptManager.

Con el Service Pack 1 de Visual Studio 2008, se han incluido muchas novedades como ya vimos, pero para trabajar con Ajax, este Service Pack incluía dos mejoras bastante interesantes:

  • Historial con ASP.NET Ajax.
  • Soporte para combinar ASP.NET Ajax Scripts.

Hoy veremos cómo combinar scripts y que ganamos al hacerlo.

¿Qué ganamos combinando varios archivos Javascript en uno?

Por razones muy diversas, puede ser recomendable que tengamos nuestra funcionalidad cliente en varios archivos de Javascript. Eso si esta practica también tiene consecuencias de cara al rendimiento de nuestra aplicación.

Actualmente cuando un navegador Web comienza a realizar peticiones para servir el contenido de una página, estas peticiones se van procesando de manera que nunca se estén sirviendo más de 4 peticiones simultaneas, que sucede que cuantas más peticiones, más lento es el proceso de carga de una página.

Así pues, como podemos deducir, hay veces que es preferible tener menos peticiones web y archivos más grandes que muchísimos pequeños y muchas peticiones web.

Como combinar scripts.

Gracias a CompositeScript, nueva funcionalidad del ScriptManager que viene con el Service Pack 1 de Visual Studio 2008 y del Framework 3.5 esto, es sumamente sencillo. Sigue leyendo

Anuncios

Llamando a Web Services por medio del objeto XMLHttpRequest de Javascript.

De un tiempo a esta parte, estamos viendo como Ajax cada vez tiene más protagonismo en nuestras aplicaciones. Las razones son varias pero las que más peso tienen seguramente son:

  • La ganancia en usabilidad que proporciona.
  • Lo fácil que es trabajar de esta manera.

Actualmente, existen infinidad de Frameworks que nos facilitan la vida a la hora de trabajar con Ajax o mejor dicho con Javascript como Prototype, JQuery, Microsoft Ajax Library o Microsoft Ajax etc… Por lo tanto, es normal que proliferen este tipo de aplicaciones.

La mayoría del trabajo con Ajax pasa por el uso de llamadas asíncronas a un servidor, y esto, aunque los distintos Frameworks lo gestionen de una forma u otra, lo conseguimos gracias al objeto XMLHttpRequest.

Un poco de historia.

La interfaz XMLHttpRequest fue desarrollada por Microsoft y la lanzo con Internet Explorer 5. Esta versión se publicó utilizando un objeto ActiveX, por lo tanto podía ser utilizada en cualquier entorno de desarrollo con soporte de esta tecnología (prácticamente la totalidad de plataformas de desarrollo de Microsoft).

Posteriormente la interfaz se ha ofrecido de manera integrada tanto en Internet Explorer como en otros navegadores (Firefox desde la versión 1.0, Safari desde la 1.2, Opera desde la 8.0 etc.…) de manera que el acceso a ella se realiza por medio de objetos (Javascript, VBScript etc.…) proporcionados por los navegadores.

El 27 de septiembre de 2006, el World Wide Web Consortium presento el primer borrador de una especificación estándar.

El objeto XMLHttpRequest de Javascript.

Javascript, goza de un objeto que nos permite usar la interfaz XMLHttpRequest, así que los Frameworks anteriormente nombrados (y muchos otros), se basan en este objeto para hacer llamadas síncronas o asíncronas al servidor.

Ahora vamos a ir viendo como realizar peticiones con este objeto. Sigue leyendo

Trabajando con Ajax y las Microsoft Ajax Library (ScriptManager, UpdatePanel etc…) e IFrames: Como resolver el error “Access Denied”.

No es extraño, encontrarse con escenarios de integración de aplicaciones (hablamos de aplicaciones Web) donde tenemos que integrar nuestras apps con aplicaciones de terceros.

Una solución muy extendida, es hacerlo con la ayuda de IFrames, donde en el cargamos nuestra aplicación en un sitio de terceros, de manera que la aplicación de terceros (donde integramos la nuestra) está en un servidor y nuestra aplicación esta en otro servidor.

Si nuestra aplicación, está trabajando con Ajax (y con ScriptManager, UpdatePanel etc…), seguramente cuando la ejecutemos en Internet Explorer (solo lo he probado con IE7 aunque tengo sospechas de que ocurrirá también con IE6) vamos a recibir un error cuya descripción es “Access Denied”.

¿Qué es el ScriptManager?

El ScriptManager, es un control de servidor que nos proporciona el Framework que nos va a gestionar  la descarga de los archivos necesarios de JavaScript  para poder trabajar con Ajax de forma sencilla.

Además, el ScriptManager, también inicializa valores del JavaScript etc… Así que tendremos que estar pendientes del uso que estamos haciendo de este para poder replicar su comportamiento.

¿Qué produce el error?

El error, lo produce la función getLocation del archivo MicrosoftAjax.js. El archivo MicrosoftAjax.js es uno de los que nos descarga el ScriptManager.

La función getLocation determina las coordenadas relativas de un pixel de un elemento del DOM respecto a la esquina superior izquierda del navegador. Como los distintos navegadores, esto lo calculan de distinta forma, esta función hace distinción del browser (algunos tienen en cuenta el scroll otros no etc…) que está ejecutando la página (he aquí la razón por la que únicamente falla en Internet Explorer) así que nos encontramos con que la parte de código que calcula las coordenadas para Internet Explorer, no lo hace demasiado bien.

¿Cómo solucionar el error?

Pues bien, dado que tenemos localizada la razón por la que se produce el error, la solución es sencilla, tenemos hacer un wrapper del código que produce el susodicho error. Sigue leyendo

Como eliminar el ScriptManager de nuestra página y que el desarrollo Ajax siga funcionando igual.

En este post, vamos a ver cómo eliminar el ScriptManager de nuestra página (y porque eliminarlo) y que todo nos siga funcionando ok, sin que esto sea una experiencia traumática. También veremos que es el ScriptManager y cuáles son sus funciones.

¿Qué es el ScriptManager y para qué Sirve?

El ScriptManager, es un control que nos proporciona el Framework y que nos permite trabajar de forma sencilla con Ajax (Asynchronous JavaScript And XML). Este se encarga de descargar los archivos javascript necesarios para trabajar con Ajax, renderizar el javascript necesario en función de un contexto, crear las llamadas XmlHttpRequest, llamadas a Web Services etc.

Al final lo que intenta, es que trabajar con Ajax sea sencillo y rápido, de manera que con un pequeño esfuerzo podamos obtener unos muy buenos resultados, haciendo él el “trabajo sucio”.

¿Qué ganamos si eliminamos el ScriptManager de una página?

Y ¿si el ScriptManager se dedica a facilitarnos la vida, porque vamos a querer eliminarlo? pues he aquí las razones: Sigue leyendo

Ejemplo practico: Mostrando el horóscopo desde una fuente externa con HttpWebRequest, HttpWebResponse, Linq y Ajax

De un tiempo a esta parte y sobre todo desde que se empezó a hablar de la web 2.0, muchos sitios exponen su información para que se pueda explotar desde diferentes aplicaciones así que en este post vamos a ver cómo obtener información de una fuente de datos externa por medio de la clase HttpWebRequest y HttpWebResponse perteneciente a System.Net, posteriormente la trataremos con Linq To Xml y para finalizar, crearemos una interfaz rica con Ajax.

Para que podamos explotar la info de un sitio web, lo primero que vamos a necesitar es saber qué es lo que vamos a explotar. Nosotros, vamos a usar un XML que expone Terra para mostrar el horóscopo.

Lo primero que vamos a necesitar, es una entidad para ir manejando los datos, a esta entidad, le he llamado HoroscopeInfo, y tiene este aspecto: Sigue leyendo