Anuncio de ASP.NET MVC 3 Release Candidate

Hace unos días el equipo de ASP.NET  ha publicado ASP.NE T MVC 3 RC (Release Candidate). Podéis descargarla aquí.

ASP.NET MVC 3 es una release increible, incluye toneladas de nuevas funcionalidades y refinamientos. También mantiene compatibilidad hacia atrás con ASP.NET MVC V1 y V2 – lo que hace fácil actualizar aplicaciones existentes (leed las notas de la release para saber qué pasos hay que seguir). Podéis aprender más sobre algunas de las nuevas capacidades de ASP.NET MVC 3 en posts que he hecho anteriormente:

Esta nueva release ASP.NET MVC 3 RC incluye muchas mejoras (además de corregir bugs, mejoras en las herramientas, tunings, etc). En este post veremos las mejoras específicas de esta release. Leed los post anteriores para aprender más sobre las muchas nuevas características de ASP.NET MVC3 que se han introducido en las previews anteriores.

Intellisense de Razor en Visual Studio.

Ya se soporta coloreado e intellisense en VS y VS Web Developer Express para el motor de vistas Razor.

Este intellisense funciona en HTML, C#, VB, JavaScript y CSS cuando editamos cualquier plantilla basada en razor.

Tenemos intellisense completo para C#/VB – incluso sobre métodos helper HTML (todos los métodos HTML helper en ASP.NET MVC también funcionan bien en vistas de Razor):

También tenemos intellisense para palabras clave de Razor :

Fijáos cómo después de poner la directiva @model para que sea un Product, los helpers HTML fuertemente tipados (y la propiedad “Model” de la plantilla) se escrien correctamente para ofrecer un intellisense adecuado para la clase “Product”:

Estamos realizando algunas modificaciones finales en el rendimiento del editor (y ya hay varias mejoras que no han sido incluidas en esta última release). Si encontráis algún escenario en el que el intellisense parece no funcionar o parece más lento de lo que debería – por favor, mandadnos un informe para comprobar que lo hemos corregido en la próxima versión.

Administrador de paquetes NuGet

Blogueé sobre un nuevo administrador de paquetes ,gratuito y open source  el mes pasado – que estamos llamando por ahora “NuPack”. Desde entonces lo hemos renombrado de NuPack a NuGet. La release de ASP.NET MVC 3 la instala automáticamente como parte de la instalación.

Podéis usar NuGet para descargar e instalar fácilmente librerias tanto comerciales como open source en vuestros proyectos. Por ejemplo, para instalar NHibernate y una librería de extensión de LINQ que alguien haya hecho , podría escribir “install-package NHibernate.Linq” con la consola de administración de NuGet desde dentro de Visual Studio:

Cuando pulsamos Intro NuGet descargará automáticamente todas las librerías (y sus dependencias) y configurará el proyecto ASP.NET MVC 3 para usarlas:

Hay cientos de librerías open source en .NET en el paquete de NuGet, y la lista continuará creciendo con el tiempo.

Pensamos que NuGet permitirá a todos los desarrolladores .NET (no sólo para los de ASP.NET MVC) poder contribuir y compartir funcionalidades en la comunidad, y hacer la creación de aplicaciones .NET mucho mejor.

Mira la charla de Scott Hanselman del PDC

Scott Hanselman ha dado la charla más valorada este año en el PDC, se llama “ASP.NET + Packaging + Open Source = Crazy Delicious”. Es una charla sin transparencias que muestra cómo crear una aplicación desde el principio hasta el final usando ASP.NET MVC 3, Razor, NuGet, EF Code First, SQL CE y un montón de otras cosas muy chulas.

image

Podéis ver la charla online o descargarla (con clic derecho y darle a “Guardar como” en cualquiera de los siguientes links:

Os recomiendo que la veáis – es entretenida, y muestra cómo todas las piezas de ASP.NET MVC 3 encajan entre sí(especialmente NuGet).

Cache de salida Parcial. (Output Caching Parcial)

ASP.NET MVC ha soportado el cache de salida de las peticiones de páginas desde la V1. Con ASP.NET MVC V3 (empezando con la esta release) también soportamos la cache de salida parcial de una página – lo que nos permite cachear regiones o fragmentos de una respuesta en lugar de toda la página. Esto termina siendo super útil en muchos escenarios.

Cachear una región de una página es realmente sencillo de hacer. Simplemente encapsulamos la región que queramos cachear con una acción que invocamos desde la vista que estamos renderizando. Por ejemplo, aquí tenemos una página de listado de productos, y quiero sacar una sección de “Daily Specials” en la página:

Aquí estoy usando el método helper Html.Action() para llamar al método SalesController.DailySpecials(). Fijáos que estoy pasando una categoría como parámetro – lo que me permite personalizar el resultado de “Daily Specials” basandose en qué tipo de productos está navegando el usuario (de esta manera, si está navegando entre productos de “informática” puedo mostrar una lista de ofertas, y si están en la categoría de bebes puedo mostrar ofertas de pañales.

Aquí tenéis una implementación simple del método SalesController.DailySpecials(). Obtiene una lista de productos y renderiza la respuesta usando una vista parcial de Razor: 

Fijaos que el método DailySpecials tiene el atributo [OutputCache]. Esto indica que el contenido renderizado debe ser cacheado (por 3600 segundos/hora). También le estamos indicando que el contenido cacheado debe variar en función del parámetro category.

Si tenemos 10 categorías diferentes de productos, nuestro método DailySpecials terminará cacheando 10 listas de ofertas – y las listas de ofertas (informática o bebes) se mostrarán dependiendo de en qué categoría esté el usuario navegando. Importante: no hay acceso a base de datos ni se ejecutará ninguna lógica si el contenido parcial se sirve fuera de la cache de salida- lo que reduce la carga del servidor y aumenta el tiempo de respuesta.

Estos nuevos mecanismos ofrecen una forma fácil y limpia de añadir cache parcial a nuestras aplicaciones.

JavaScript no intrusivo y validación

He hablado varias veces sobre la validación y las mejoras de JavaScript/AJAX que vienen con ASP.NET MVC en el post sobre APS.NET V3 Preview release

Una de las mejoras de ASP.NET MVC 3 es que los helpers de validación y AJAX ahora usan una aproximacion no intrusiva por defecto. JavaScript no intrusivo evita la injección de código JavaScript en HTML, y permite una separación más clara de comportamiento usando la nueva convención “Data-” de HTML 5 (que funciona también en navegadores antiguos – incluyendo IE6). Esto hace nuestro HTML más pequeño y limpio, y hace más sencillo el personalizar nuestras librerías JS. Los métodos helper de validación de ASP.NET MVC 3 usan por defecto el pluging jQueryValidate por defecto.

Validación de Cliente Activo por defecto

En versiones anteriores de ASP.NET MVC (incluyendo la del mes pasado ASP.NET MVC 3 Beta) teniamos que llamar explícitamente al método Html.EnableClientValidation() en nuestras vistas para permitir la validación de cliente. A partir de esta nueva RC ya no hace falta, y la validación de cliente (usando una aproximación no intrusiva) está habilitada por defecto (podemos desactivar esto si queremos a traves de una sección de configuración del web.config).

Seguimos necesitando referenciar las librerías apropiadas de jQuery y jQuery Validation en nuestro sitio para poder usar la validación en cliente. Como referenciamos librerías JavaScript explícitamente, podemos elegir tanto si queremos hostearlos en nuestro servidor o referenciarlas desde un CDN (Contend Delivery Network) como Microsoft o Google.

Validador Remoto

Una característica nueva de validación es que con esta nueva RC se soporta el atributo de validación [Remote] que nos permite aprovechar el plugin de validación remoto de jQuery. Esto permite a la librería de validación de cliente llamar a un método personalizado definido en el servidor para realizar la lógica de validación que sólo puede ser realizada en el servidor. Esto permite una forma más limpia de integrar escenarios como estos en nuestras validaciones de cliente.

Peticiones granulares de validación

ASP.NET MVC integra un soporte de validación que nos ayuda a protegernos contra ataques XSS e inyeción de HTML. Algunas veces, sin embargo, queremos desactivar las peticiones de validación en algunos escenarios en los que queremos que los usuarios puedan hacer llamadas post HTMl (por ejemplo: para blog authoring o edicion de contenido CMS).

Podemos añadir el atributo [SkipRequestValidation] a nuestras vistas o modelos que deshabilita esta opción:

Añadiendo el atributo anterior a nuestros modelos y vistas podemos ponerlo una vez y aplicarlo a todos los escenarios.

Otras mejoras en la RC

A continuación tenéis una lista parcial de algunas mejoras de esta RC.

Mejorado el diálogo “New Proyect”:

Cuando creamos un proyecto ASP.NE TMVC3 se nos muestra el siguiente diálogo:

Este diálogo es ahora extensible, y podemos añadir plantillas, motores de vistas, y frameworks de test unitarios. Publicaremos plantillas nuevas con el tiempo (que se iran mostrando en la lista ) para hacer más fáil tener nuevos proyectos listos.

Mejoras de andamiage

Un numero de pequeñas, pero increibles, mejoras se han hecho a las plantillas por defecto de ASP.NET MVC. Las plantillas hacen un mejor trabajo identificando propieaddes ID/Primary Keys en modelos, y las administran apropieadamente (por ejemplo: ahora crean sus propios links para editar/borrar/etc). La estructura del Crear/Editar también usan el método Html.EditorFor() por defecto en lugar del Html.TextBoxFor()- lo que hace más sencillo personalizar cómo se muestran nuestros modelos.

Mejoras en el diállogo Add View

Cuando usamos el diálogo Add-> View para añadir una vista fuertemente tipada, el diálogo ahora filtra por los tipos más aplicables y los organiza y ordena de una forma que hace más sencilla la forma de encontrar lo que estamos buscando.

Soporte para controladores sin Sesion

Podemos indicar ahora si queremos que nuestras clases controladoras usen el Session-state – y si queremos que sea de solo lectura o que se puede escribir.

Modelos dinámicos en Razor por defecto

Si no especificamos la directiva @model en las vistas de Razor, la propiedad “Model” de la página será por defecto dinámica en lugar de object. Esto nos permite hacer late-bindingg contra un modelo de tipos. Tenemos que añadir ántes @model dynamic al principio del archivo para hacer esto.

Nuevas sobrecargas para Html.LabelFor() y Html.LabelForModel()

Se han añadido nuevas sobrecargas a los métodos LabelFor() y LabelForModel() para permitir opcionalmente especificar o sobreescribir texto en etiquetas.

Descarga

Podéis un enlace de descarga directa para ASP.NET MVC 3 RC aquí. Fucniona tanto en VS 2010 como en Visual Web Developer 2010 Express.

Aseguraro de desinstalar versinoes anteriores de ASP.NET MVC 3 que tengáis instladas.

Resúmen

Esta nueva RC contiene un montón de mejoras que hacen que el desarrollo web con ASP.NET MVC sea aún mejor. Si tenéis alguna pregunta sobre esta release, o encontráis algún bug, porfavor posteadlos en los foros de ASP.NET MVC o en www.asp.net. El equipo de ASP.NET MVC monitoriza estos foros muy de cerca y serán capaces de ayudaros.

Tenemos planeado pasar las próximas semanas monitorizando feedback, mejorando el rendimiento, y corrigiendo errores. Gracias por adelantado por las incidencias que nos enviéis.

Espero que sirva.

Scott.

Traducido por: Juan María Laó Ramos.

Artículo original.

0 comentarios sobre “Anuncio de ASP.NET MVC 3 Release Candidate”

Deja un comentario

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