miércoles, 4 de agosto de 2010

ASP.NET AJAX en .NET 3.5 y VS 2008

ASP.NET AJAX incluído en .NET 3.5
ASP.NET AJAX 1.0 se publicó como una descarga aparte que se instalaba encima de ASP.NET 2.0. Con .NET Framework 3.5, todas estas características vienen incluídas en ASP.NET, con lo que no tendremos que descargar ni instalar para construir o desplegar aplicaciones.
Cuando creamos nuevas aplicaciones ASP.NET o sitios web con VS 2008 con el framework .NET 3.5, VS añadirá las líneas necesarias para AJAX en el web.config y añadirá los controles de servidor de ASP.NET AJAX en nuestra barra de herramientas.



La versión de ASP.NET AJAX que viene con .NET 3.5 tiene unas cuantas mejoras – entro otras el soporte para usar UpdatePanels en WebParts, soporte para WCF basado en end-points JSON, soporte para usar ASP.NET Profile, Role y Login Application Services con JavaScript, y se han corregido algunos bugs y se ha mejorado el rendimiento.

Entendiendo el versionado de ASP.NET AJAX
ASP.NET AJAX 1.0 y .NET 3.5 pueden estar instalado en la misma máquina. ASP.NET AJAX 1.0 está implementado en la V1.0 del ensamblado System.Web.Extensions.dll. La versión V3.5 de System.Web.Extensions.dll es totalmente compatible con la implementación 1.0 (con lo que no tenemos que cambiar ningún código para usarlo).
Cada aplicación ASP.NET en una máquina puede elegir qué versión de ASP.NET AJAX se usara para construir y ejectuarse. Esto se configura en la sección del web.config, así como con el assembly con el que se haya compilado (en proyectos de tipo sitios web estas referencias se registran en la sección del web.config, en proyecto del tipo aplicaicon web está referenciada en el archivo de proyecto).
Podemos usar VS 2008 para aplicaciones de ASP.NET AJAX 3.5, y usar el soporte multitargeting para construir aplicaciones web ASP.NET 2.0 que usen ASP.NET AJAX 1.0. Veremos cómo hacer esto en las siguientes secciones.

Información importante sobre la Beta 2
Hace unos días publicamos la Beta 2 en la web, descubrimos un problemilla con ASP.NET AJAX. Si leeis el post original VS 2008 and .NET 3.5 Beta Released, recordaréis que comenté un parche para instalar y resolver el problema:

Debemos descargar y ejecutar este archivo batch. Sólo tarda unos pocos
segundos en ejecutarse y arregla un problema que hemos encontrado hace una
semana con la política de versiones de System.Web.Extension.dll – que es el
assembly que contiene a ASP.NET AJAX. Si no ejecutamos este archivo, entonces
los proyectos de ASP.NET 2.0 creados con ASP.NET AJAX 1.0 y VS 2005 usará la
versión que viene en la Beta 2 de .NET 3.5. Esto funcionará bien - pero
introduciremos una dependencia con .NET 3.5 en aplicaciones que creemos con VS
2005. La ejecución del archivo Batch la política de enlazado del assembly
System.Web.Extensions.dll y nos aseguraremos que sólo usaremos la versión
nueva de .NET 3.5 en los proyectos en los que usemos explícitamente .NET
3.5
Las buenas noticias es que corregimos el problema, y permite que podamos desarrollar apilcaciones con ASP.NET AJAX en la misma máquina tanto con VS 2005 y VS 2008.
El primer síntoma es que VS 2008 detecta una versión incorrecta de ASP.NET AJAX cuando abrimos proyectos de ASP.NET 2.0 (en concreto puede hacer que VS 2008 piense que en realidad se está usando .NET 3.5). Esto hace necesario un par de pasos adicionales cuando abramos con la Beta2 por primera vez un proyecto con ASP.NET AJAX 1.0. No tendremos que hacer estos pasos con la release final de VS 2008.
Actualizar aplicaciones ASP.NET AJAX 1.0 para usar ASP.NET AJAX 3.5
Cuando usemos VS 2008 para abrir una aplicacion existente de ASP.NET 2.0 que usa ASP.NET AJAX 1.0, podemos elegir si queremos actualizar la aplicación para que use .NET 3.5 (y la versión de ASP.NET AJAX que incluye).

El equipo de herramientas web de Visual Studio ha publicado el post Upgrading ASP.NET AJAX 1.0 Websites and Web Applications to .NET Framework 3.5 que nos describe las instrucciones para conseguir usar VS 2008 Beta 2. Las buenas noticias es que esa actualización NO requiere ningún cambio en nuestro código, y sólo tardará unos minutos en terminar.

Como parte de la actualización de ASP.NET AJAX 1.0 a .NET 3.5, querremos actualizar los controles de la librería de ASP.NET AJAX que estemos usando. El equipo de ASP.NET AJAX Control Toolkit está publicando versiones tanto para ASP.NET AJAX 1.0 y .NET 3.5 que podemos descargar aquí:

El post Upgrading ASP.NET AJAX 1.0 Websites and Web Applications to .NET Framework 3.5 también describe cómo añadir esta versión ASP.NET AJAX 3.5 del AJAX Control Toolkit en la barra de herramientas de VS 2008


Usando VS 2008 para construir aplicaiones ASP.NET AJAX 1.0 (con Multi-Targeting).
Cuando usamos VS 2008 para abrir aplicaiones de ASP.NET 2.0 que usen ASP.NET AJAX 1.0 podemos elegir no actualizarlo a la versión .NET 3.5, y usar el multi-targeting de VS 2008 para construirla con ASP.NET 2.0 y ASP.NET AJAX 1.0
El equipo de herramientas web de VS ha publicado el post Using VS 2008 to Target ASP.NET AJAX 1.0 que describe cómo hacer esto.
En ese post hay una serie de pasos manuales que tendremos que hacer en la Beta2 para tener en la barra de herramientas tanto las herramientas de ASP.NET AJAX 1.0 como los controles de ASP.NET AJAX Control Toolkit. Para la versión final de VS 2008 pondremos un paquete de instalación para hacer esto automáticamente, y añadiremos templates tanto de items como de proyectos para ASP.NET AJAX 1.0.
Os estaréis preguntado – ¿Porque usar VS 2008 para hacer aplicaciones con ASP.NET AJAX 1.0 en vez de VS 2005?. Las ventajas son que podremos aprovechar las nuevas características de VS 2008 como el intellisense de JavaScript, debugging de javaScript, mejor diseñador WYSISWYG, administración de CSS, las mejoras del editor de código, test unitarios en VS Professional, integración con TFS, y más.

Resumen
.NET 3.5 incluye soporte para todas las características de ASP.NET AJAX 1.0. Escribiré algunos post más adelante sobre cómo aprovecharlas.
Podemos usar VS 2008 tanto para crear proyectos con .NET 3.5 como para versiones anteriores del framework. El equipo de herramientas web de VS ha publicado algunos post sobre cómo hacer esto paso por paso.
Espero que sirva.

No hay comentarios: