Service Pack 1 Beta para VS 2008 y .NET Framework 3.5

Hace unos días se ha publicado la beta 1 para .NET 3.5 y VS 2008. En este SP se incluyen varias correcciones y mejoras en el rendimiento de ciertos aspectos que han sido reportados desde que publicamos estos productos en Noviembre. También contiene varias nuevas características que hacen que el desarrollo de aplicaciones .NET sea mejor (más abajo tenéis algunos detalles).

Planeamos publicar la versión final este verano. Podéis probar la beta 1 aquí

Importante: Notas de instalación del SP1 Beta

Aún está en fase beta -así que tened cuidado al instalarla en máquinas críticas. Hay que tener en cuenta algunas cosas ántes de instala esta beta 1:

  1. Si ejecutáis Windows Vista, aseguráos de tener instalado el SP1 de Vista. Hay unos cuantos problemas de instalación del SP1 de .NET 3.5 en versiones RTM de Vista. Estos problemas se corregirán en la versión final del SP1 de .NET 3.5 - hasta entonces aseguráos de que tenéis el SP1 de Vista instalado ántes de instalar el SP1 de .NET 3.5 Beta.
  2. Si habéis instalado las VS 2008 Tools for Silverlight 2 Beta1 en vuestra máquina, debéis desinstalarlo - así como la actualización KB949325 de VS 2008- ántes de instalar la beta del SP1 de VS 2008 (si no lo hacéis, la instalación os fallará). Podéis ver más detalles de los pasos a seguir aquí (nota: tenéis que desinstalar ambas cosas). No me refiero al runtime de Silverlight 2 - el componente que debe ser desinstalado es VS 2008 Tools for Silverlight 2. Publicaremos la nueva versión del VS 2008 Tools for Silverlight 2 en unas semanas.
  3. Hay un cambio en el comportamiento del este SP1 Beta que provoca un problema con las versiones de Expression Blend. Este cambio de comportamiento será corregido para la versión final de la beta 1. Hasta entonces tenéis que descargar esta versión actualizada de Blend 2.5 para evitar este problema.

Mejoras en el desarrollo web.

.NET 3.5 SP1 y VS 2008 SP1 incluyen un montón de mejoras en el desarrollo de aplicaciones web.

El equipo de herramientas web de VS tienen más detalles (incluyendo correcciones de bugs más específicos ) sobre cómo funciona VS aquí.

Soporte de Data Scaffolding de ASP.NET (ASP.NET Dynamic Data)

.NET 3.5 SP1 añade el soporte para ASP.NET Dynamic Data que nos permite crear aplicaciones web data-driven muy rápidamente. Podemos crear interfaces de usuario automáticamente (con soporte CRUD completo - crear, leer, actualizar, borrar) contra un montón de modelos de datos (entre LINQ to SQL, LINQ to Entities, Servicios REST, y cualquier otro ORM o modelo de objetos con un proveedor dinámico de datos).

El SP1 añade esta nueva funcionalidad a los controles GridView, ListView, DetailsView y FormView de ASP.NET, y permite una validación simple y flexible. También nos permite filtrar controles de servidor, así como soporte para trabajar con las relaciones de clave ajena de manera automática a la vez que nos muestra los nombres de estas - evitándonos tener que escribir miles de lineas de código.

Podéis aprender más sobre esto en los videos y tutoriales de Scott Hanselman aquí.

Motor de rutado de ASP.NET (System.Web.Routing)

.NET 3.5 SP1 incluye un nuevo motor de rutado url que nos permite mapear urls a sus handlers correspondientes. Incluye soporte para parsear parámetros desde una url limpia (por ejemplo: /Products/Browse/Beverages), así como calcular dinámicamente y generar urls desde rutas registradas.

Este nuevo motor es usado tanto por ASP.NET Dynamic Data como por ASP.NET MVC Framework. Soportará tanto WebForms como peticiones MVC.

Soporte para el historial con ASP.NET AJAX

.NET 3.5 SP1 añade nuevas apis a ASP.NET AJAX para tener un control total de la lista de navegación del navegador (permitiéndonos controlar el comportamiento de los botones back/forward del navegador).

Podéis aprender más de esto en éste artículo y en este screencast.

Soporte para la combinación de Script de ASP.NET AJAX

.NET 3.5 SP1 introduce el nuevo elemento <CompositeScript> del control <asp:ScriptManager>, que nos permite definir multiples referencias de scripts. Todas las referencias del elemento CompositeScript se combinan en el servidor y son servidas como un script simple al cliente, reduciendo el número de peticiones al servidor y mejorando el tiempo de carga de las aplicaciones ASP.NET AJAX.

Esta característica soporta tanto scripts basados en path como en recursos, y se sirven dinámicamente con el handler ScriptResources.axd

Mejoras en el rendimiento del diseñador HTML y en el editor de código HTML de VS 2008

En febrero publicamos un HotFix roll-up que incluía un conjunto de correcciones del diseñador web de VS 2008. el SP1 las incluye todas, y unas cuantas más sobre la mejora del rendimiento.

Formateo de script y preferencias de código de JavaScript

Desde el principio, Visual Studio ha tenido muchas mejoras en el formateo de código VB y C#.

El SP1 añade un formateo de código más rico para JavaScript (tanto en bloques inline <script> como en archivos .js).

Podéis personalizar vuestras preferencias en Tools-> Options.

Estas preferencias se usarán cada vez que escribáis codigo JavaScript. También podéis seleccionar el código existente, boton derecho, y elegir la opcion "Format Selection" para que se aplicen vuestras preferencias al código JavaScript que tengáis. Podéis aprender más sobre esta característica aquí.

Mejoras del intellisense de VS 2008 para JavaScript para varios frameworks

VS 2008 soporta intellisense para JavaScrip en la vista de código. El soporte inicial en VS 2008 funciona bien con vanilla JavaScript y con el JavaScript de ASP.NET AJAX. Pero es un lenguaje muy flexible, y muchas librerías JavaScript usan esta flexibilidad para implementar todas las características - algunas veces de forma que el motor de intellisense no le da soporte completo.

VS 2008 SP1 añade un mejor intellisense para librerías javascript populares (concretamente lo hicimos para soportar JQuery, Prototype, Scriptaculous, ExtJS, y otras librerías). Tendréis un mejor comportamiento del intellisense con estas librerías. También estamos buscando la manera de mantener ese intellisense y se alimente de la documentación de las más populares.

Aquí tenéis un ejemplo usando una función JQuery con VS 2008 y su motor de intellisense para JavaScript:

Fijáos que ya tenemos más documentación para los selectores de JQuery:


Soporte de refactoring de servicios WCF en proyectos ASP.NET

VS 2008 SP1 añade un mejor soporte de refactoring para servicios WCF que se incluyen tanto en proyectos web como en aplicaciones web en ASP.NET

Si usáis el refactoring para renombrar el nombre de la clase, la interfaz del contrato, o el namespace de un servicio WCF, VS 2008 SP1 hará las modificaciones necesarias tanto en el web.config como en las referencias que se hagan al archivo SVC.

Soporte de intellisense y debugging en ASP clásico

Las versiones anteriores de Visual Studio soportaban intellisense y debugging con páginas clásicas de ASP. Los templates de archivos y proyectos para crear páginas o proyectos en  ASP clásico no han estado presentes en las últimas versiones de Visual Studio, pero presumimos erroneamente que esto significaba que la gente no necesitarían este soporte para ASP clásico. Después del feedback recibido nos dimos cuenta de que estábamos equivocados.

Con este Service Pack, este soporte vuelve a Visual Studio:

Soporte de proyectos de librería de clases de aplicaciones web en Visual Web Developer Express Edition.

Visual Web Developer 2008 Express edition (que es gratuita) está siendo actualizada en el SP1 para soportar tanto proyectos de librerías de clases como de aplicaciones web ASP.NET. Las versiones anteriores sólo soportaban proyectos web ASP.NET.

Entre otros beneficios, el soporte de estos dos tipos de proyectos permitirán que podamos trabajar con ASP.NET MVC y Silverlight con esta versión express. Todas las mejoras de JavaScript, Dynamic Data, ASP Clasico y AJAX funcionan sin ningún problema en Visual WEb Developer Express.

Mejoras para el desarrollo de clientes

.NET 3.5 SP1 y VS 2008 SP1 añaden mejoras en el rendimiento, despliegue y más características para crar aplicaciones cliente.

Tim Sneath ha escrito un post en el que nos habla de algunas de estas mejoras, podéis leerlo aquí. Aquí tenéis algunos detalles de ellas:

Mejoras de rendimiento en el arranque

.NET 3.5 SP1 incluye algunas mejoras muy significativas al CLR que permiten menores tiempo de inicio  - sobre todo en escenarios de arranque en frío (donde no hay ninguna aplicación .NET en ejecución). Esto lo hemos conseguido cambiando el layout de las imagenes del CLR NGEN, y optimizando los patrones de acceso a discos. También hemos hecho algunas optimizaciones al generador de código JIT que permiten una mejor generacion de código inline en lugar de usar estructuras.

Estamos obteniendo unas mejoras del 40% con respecto al tiempo de inicio de aplicaciones .NET cliente con el SP1 instalado. Estas optimizaciones tienen un efecto secundario muy obvio, y es que aumenta el número de peticiones que podemos hacer a las aplicaciones ASP.NET por segundo, llegando hasta un 10% más en algunos casos.

Nuevo paquete configuración de .NET Framework de cliente

.NET 3.5 SP1 introduce un nuevo paquete de instalación para desarrolladores de aplicaciones cliente en .NET llamado ".NET Framework Client Profile". Nos aporta un nuevo instalador que permite instalaciones más rápidas, pequeñas y simples para aplicaciones cliente .NET en máquinas que no tienen el .NET Framework instalado.

Este nuevo paquete de instalación contiene sólo los assemblies y archivos necesarios del .NET Framework que se usan en la aplicacion que tengamos. Por ejemplo, incluye Windows Forms, WPF y WCF. No incluye ASP.NET y esas librerías y componentes que se usan en escenarios de servidor. Esperamos que este paquete ocupe unos 26MB, y que pueda ser descargado e instalado mucho más rápido que el framework completo.

Los assemblies y APIs de este paquete son 100% idénticos a los que hay en la versión completa del framework (son literalmente los mismos binarios). Esto significa que las aplicaciones pueden usar tanto esta version "reducida" como la versión completa (sin recompilar).

El desarrollador indicará que la aplicación que se está construyendo soporta tanto este paquete "reducido" como el completo en las propiedades del proyecto en VS 2008 SP1:

VS 2008 se asegurará de que el proyecto sólo puede referenciar a los assemblies que están contenidos en ese paquete (y generará un error de compilación si intentamos usar algo de un assemblie que no esté en él). La aplicación cliente se podrá ejecutar en máquinas que tengan tanto esta versión del framework como la versión completa.

Si tenéis una máquina con esta versión, e intentais ejecutar una aplicación .NET que no ha sido marcada para que soporte el uso de este paquete, el CLR no permitirá su ejecución - y le preguntará al usuario si queire instalar la versión completa del Framework. De esta manera se asegura de que la aplicación se ejecutará correctamente - y los programadores no tendrán que preocuparse si se olvidan algún assembly cuando un usuario intente ejecutar una aplicación que requiere el framework completo y sólo tienen instalado este paquete.

Creemos que la mayoría de aplicaciones cliente sólo usan los assemblies que están en este paquete, aumentando así la velocidad de instalación.

Nuevo BootStrapper para aplicaciones cliente

.NET 3.5 SP1 introduce el componente BootStrapper que podemos usar en las aplicaciones cliente para asegurarnos de que está insalado el framework.

Este componente administra la descarga y la instalación del .NET Framework Client Profile o la versión completa automáticamente desde internet si la máquina no los tiene instalados. Bootstrapper también se encarga de actualizar las máquinas con versiones anteriores del framework. Por ejemplo, si la máquina tiene instalado la versión 3.0 de .NET, y vuestra aplicación necesita la versión 3.5, bootstarpper pued descargarse sólo los archivos necesarios para actualizarla a la versión 3.5 (sin tener que descargar el framework completo).

Podemos usar bootstrapper junto con ClickOnce, o con instaladores de terceros (como Installshield). Bootstrapper nos permite personalizar la fase de instalación (pantallas, pasos del wizard, etc ) y hace mucho más sencilla la tarea de personalizar las experiencias de instalación.

Mejoras en el despliegue de aplicaciones cliente con ClickOnce

.NET 3.5 SP1 incluye varias mejoras para el despliegue de aplicaciones ClickOnce tanto en Windows Forms como en WPF. Entre otras mejoras están:

  • Soporte para el .NET Framework Client Profile.
  • Las aplicaciones ClickOnce se pueden instalar programaticamente a través de un Setup.exe mientras muestra una interfaz personalizada.
  • Mejoras en la generación de paquetes MSI + ClickOnce.
  • En los cuadros de dialogos de error podemos añadir enlaces a sitios web.
  • Soporte en tiempo de diseño para establecer asociaciones de archivos.
  • Ahora podemos decidir si queremos firmar los manifiestos de ClickOnce.
  • Podemos decidir si podemos ejecutar aplicaciones ClickOnce firmadas sólo por "Known Publishers" y bloquear todas las demas
  • Extensión para Firefox que da soporte a poder instalar aplicaciones ClickOnce desde Firefox.

Controles de Windows Forms

SP1 añade unos cuantos controles para Windows Forms - como formas vectoriales, Impresión  y DataRepeater:

Mejoras de rendimiento en WPF

.NET 3.5 SP1 incluye varias optimizaciones para WPF. Entre otras:

  • Animaciones Suaves
  • Aceleración hardware para Blur y efectos de Bitmaps.
  • Mejoras en la velocidad de renderizado de texto - especialmente en VisualBrish y escenas 3D
  • Mejoras en gráficos 2D - especialemente en escenarios con z-index.
  • Una nueva clase WriteableBitmap que permite actualizaciones en tiempo real de partes de bitmaps. Esto nos permite personalizar los "pintados"- estilos de aplicaciones, visualización de datos, gráficas que se saltaban las APIs 2D de WPF.
  • Mejoras de rendimiento en ventanas de capas.

Este SP1 también añade un mejor soporte para la escalabilidad de datos en WPF. Los controles ListView, ListBox y TreeView soportarn "reciclado de elementos del contenedor" y "virtualización" que nos permite alcanzar una mejora de rendimiento del 40% cuando hay scrolls. Estos controles también traen soportan el "scroll retrasado" que evita hacer scroll en tiempo real y espera a que el usuario suelte el scroll (el modo por defecto de Outlook). Esto puede ser util cuando estamos haciendo scroll sobre muchos datos.

Mejoras de datos en WPF

.NET 3. SP1 incluye varias mejoras de binding y edición de datos:

  • Soporte para StringFormat en expressiones de binding {{Binding}} para formatear datos.
  • Nuevo soporte para filas alternantes en controles que deriven de ItemsControl, lo que hace más sencillo establecer las propiedades de las filas (por ejemplo: colores de fondo alternantes).
  • Mejor administración y conversión de valores nulos en controles editables.
  • Validaciones a nivel de Item para validar datos de un elemento enlazado.
  • Soporte para trabajar con la multi-selección cuando queramos editar datos.
  • IEditableCollectionView, una interfaz a usar con controles de datos para permitir la edicion/inserción/eliminación de elementos de manera transaccional.
  • Mejoras en el rendimiento cuando enlazamos a fuentes de datos IEnumerables.

WPF también nos permite crear paneles con scroll virtual. Los usaremos junto a las mejoras de binding para crear el nuevo datagrid de WPF que publicaremos más adelante ántes de que acabe el año.

Efectos de sombra extensibles en WPF

.NET 3.5 SP1 añade una nueva arquitectura a los efectos de sombra de WPF y una nueva API que nos permite crear efectos visuales creados y soportados por cualquier elemento de WPF. Estos efectos se pueden mezclar con varias composiciones. Lo que lo hace particularmente poderoso es que WPF ejectua esos efectos (incluso lo que hagamos nosotros) usando el GPU - dándonos todo el rendimiento que se le puede sacar al hardware de aceleración gráfica que dispongamos. Como casi todo en WPF, podemos incluso usar el databinding y  las animaciones en las propiedades de un efecto (permitiendoles integrarse completamente en la experiencia de usuario).

Aplicar un efecto a un control es super fácil - sólo hay que modificar la propiedad "Effect" de un control. Por ejemplo, para añadir la aceleración hardware para un efecto de sombra en un botón podemos usar el control <DropShadowEffect> en el código XAML:

De esta forma, el botón se renderiza de la siguiente manera:

Como los efectos son extensibles, podemos crear nuestros propios objetos de efectos y aplicarlos. Por ejemplo, podemos crear y añadir el efecto personalizado "DirectionalBlurEffect" a un control ListBox para cambiar la forma del scroll para que aplique el efecto de niebla mientras hacemos el scroll:

Hechadle un vistazo al blog de Greg-Schechter para aprender cómo funciona esta arquitectura de efectos y ved lo que podéis crear y aplicar en vuestras aplicaciones (su primer conjunto de post está aquí).

Nota: Además de introducir nuevos efectos de sombra, WPF en el SP1 también ha actualizado los efectos de niebla y DropShadow que ya había para que funcionen con aceleración por hardware.

Interoperatibilidad de WPF con Direct3D

.NET 3.5 SP1 soporta por fín la integración de Direct3D en WPF. Esto nos da un acceso más directo al hardware para sacarle el máximo partido al api de Direct3D en aplicaciones WPF. Podremos trabajar con contenido Direct3D como si fuese una imagen de nuestra aplicación, y usar ese contenido para darle textura a los controles de WPF.

Por ejemplo, aquí tenéis tres ejemplos del SDK de Direct3D:

Podemos tanto cargarlas como imágenes en nuestras aplicaciones WPF, o mapearlas como texturas en controles WPF. Aquí tenéis un ejemplo de mapearlas como texturas en cubos de una aplicación WPF:

Nota: La integración de Direct3D no está disponible aún en esta beta1. Aparecerá en la versión release.

Mejoras de VS 2008 para WPF

VS 2008 incluye varias mejoras con respecto a proyectos WPF, sobre todo en el diseñador:

  • Varias mejoras de rendimiento.
  • Eventos en tabs en el listado de propiedades.
  • Posibilidad de ordenar alfabéticamente las propiedades.
  • Lineas de margenes para formar el layout más rápido.
  • Mejor soporte para el control TabControl, Expander y Grid
  • Las refactorizaciones en el código trasero se ven reflejadas en el XAML ( tanto en la declaración de controles como de eventos).
  • Las opciones de Go to Definition y Find All References buscan en archivos XAML.

También se ha actualizado el debugger en el SP1 de manera que errores en tiempo de ejecución en el XAML (por ejemplo, referencias de estilos, fuentes de datos y otros objetos que no existan) estarán mejor identificados:

Mejoras en los datos

.NET 3.5 SP1 y VS 2008 SP1 incluyen muchas mejoras en la parte de datos. Algunas son:

Soporte de SQL 2008

.NET 3.5 y VS 2008 están siendo actualizados para que soporten la próxima versión de SQL 2008. Los diseñadores de VS 2008, proyectos y wizards ya soportan perfectamente las conexiones y el trabajo necesario para atacar bases de datos de SQL 2008.

ADO.NET Entity Framework y LINQ to Entities

.NET 3.5 SP1 incluye el nuevo ADO.NET Entity Framework, que nos permite definir un modelo de datos de alto nivel sobre datos relacionales, y luego programar en los términos de ese modelo. Conceptos como herencia, tipos complejos y relaciones (incluso soporte de relaciones N:M) se pueden modelar con él. VS 2008 SP1 incluye un diseñador para ayudarnos en la tarea del modelado:

El ADO.NET Entity Framework y el diseñador de VS 2008 soportan un modelo de pluggins que les permite ser usados con cualquier base de datos (entre los que están Oracle, DB2, MySQL, PostgreSQL, SQLite, VistaDB, Informix, Sybase).

Ya podemos usar LINQ y LINQ to Entities para consultar, manipular y actualizar estos objetos.

ADO.NET Data Services (nombre en clave "Astoria").

.NET 3.5 SP1 incluye un framework flexible que permite la creación de servicios de datos REST. Con nombre clave "Astoria", el framework ADO.NET Data Services nos permite publicar datos por medio de sintaxis estándar REST URI y usar HTTP para operar con recursos de datos. Ahora podemos exponer nuestros modelos de datos creados con ADO.NET Entity Framework, y/o usar un proveedor para exponer otros modelos de datos.

Además de publicar fuentes de datos, el framework también añade una api para trabajar con servicios REST remotos. En esta api hay una librería LINQ que permite hacer peticiones remotas a servicios RESt.

Mejoras en el desarrollo de WCF.

.NET 3.5 SP1 y VS 2008 SP1 incluye varias mejoras en WCF:

  • Mejoras en la escalabilidad (5-10x) en aplicaciones hosteadas en Web.
  • Soporte para entidades del ADO.NET Entity Framework en contratos WCF.
  • Mejoras en la usabilidad de la API con los serializadores de DataContract, y en el UriTemplate y el modelo de programación web de WCF
  • Soporte mejorado de TestClient en VS 2008 SP1.
  • Nuevo wizard de hosting para proyectos WCF.
  • Mejoras en el debuggin en escenarios de confianza parcial

Mejoras en VB y C#

Los equipos de VB y C# han incluido varias mejoras en VS 2008 SP1:

Visual Basic

Ahora podemos añadir elementos "XML to Schema" en proyectos Visual Basic. Cuando añadamos este elemento a un proyecto nos aparecerá un Wizar que nos permite crear un conjunto de esquemas XSD desde una gran variedad de fuentes XML. Este conjunto de esquemas se añaden al proyecto y permite el intellisense de XML en VB. Este soporte estaba disponible como descarga - podéis aprender más sobre el aquí.

También se ha incluido un navegador XSD que nos permite navegar por esos esquemas. Con la versión final del SP1, podremos hacer clic derecho en el nombre de un elemento XML (tanto en propiedades como en literales XML) en el editor de VB seleccionar "Go to XML Schema Definition" - y se abrirá el navegador XSD en el esquema que tengamos en el proyecto VB.

C#

El editor de código identifica y muesra unas rallas rojas en muchos errores semánticos que ántes necesitaban una compilación explicita para identificarlos. Por ejemplo, si intentáis declarar y usar un tipo desconocido en el editor de C#, hoy no veréis este error hasta que lo compiléis. Ahora lo veremos inmediatamente (sin tener que compilar):

El debugger en VS 2008 SP1 también ha sido mejorado para dotar de mayor facilidades para evaluar expresiones LINQ y ver el resultado en depuración:

Los origines de datos que permiten enlazar con LINQ tienen un nodo llamado "Results View" en la ventana de Watch. Si expandimos este nodo se evaluará la expresión LINQ y nos permitirá examinar los objetos que devuelve:

Mejoras en Team Foundation Server

TFS 2008 SP1 trae un montón de mejoras. Leed el post de Brian Harry  Team Foundation Server 2008 SP1 Preview para más detalles

Resumen

.NET 3.5 SP1 y VS 2008 SP1 corrigen muchos errores, mejoran el rendimiento, y añaden nuevas características increíbles que hacen que la creación de aplicaiones .NET sea mucho mejor. Será un service pack totalmente compatible.

Tenemos pensado publicar la versión final tanto de .NET 3.5 SP1 como de VS 2008 SP1 este verano. Podéis descargar y usar la beta YA, aquí.

Espero que sirva.

Scott

Traducido por: Juan María Laó Ramos.

Artículo original.

 

N.T: Ha sido largo de traducir, pero increible.