Autor en Google+
Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET, ASP.NET Core, MVC, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

10 años online 🎂

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET, ASP.NET Core, MVC, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
viernes, 2 de octubre de 2009

image Ayer mismo anunciaba Phil Haack la publicación de la segunda preview de ASP.NET MVC 2, que continúa profundizando en las mejoras que ya se incluyeron en la primera entrega.

Según se recoge en el documento de notas del producto, las novedades que podremos encontrar son:

  • Abstracción del proveedor de metadatos, que será útil para implementar nuestros propios sistemas de obtención de metainformación sobre las clases del modelo, aunque por defecto se utilizarán los atributos presentes en System.ComponentModel.DataAnnotations.
  • Abstracción del proveedor de validaciones del modelo, que nos permitirá utilizar mecanismos personalizados de validación durante el proceso de binding, que por defecto utilizará también las DataAnnotations.
  • Validación automática en cliente, que aunque permite la utilización de otros frameworks, la implementación por defecto utiliza el plugin jQuery Validation para generar en cliente la lógica de validación descrita en los metadatos de las propiedades del modelo. De momento, soporta las siguientes DataAnnotations:
    • StringLengthAttribute, para limitar el tamaño máximo de un campo texto.
    • RequiredAttribute, para indicar la obligatoriedad de introducir un valor.
    • RegexAttribute, que añade la restricción de obligado cumplimiento de la expresión regular indicada.
    • RangeAttribute, para especificar el rango de valores de un campo (por ejemplo, un entero).
    Dado que el model binder implementa las validaciones en servidor, parece que vamos en camino para ahorrarnos el trabajo sucio :-)
  • Inclusión del filtro RequireHttpsAttribute, que aplicado a una acción, fuerza a que ésta sea invocada utilizando el protocolo HTTPS.
  • Inclusión del helper Html HttpMethodOverride, que permite sobrescribir el verbo HTTP enviado por el cliente en aquellos agentes de usuario que no soportan los verbos menos frecuentes (PUT, DELETE…), introduciendo un campo oculto que es detectado posteriormente.
  • Posibilidad de incluir áreas en un proyecto único, es decir, sin necesidad de crear proyectos independientes, facilitando además el registro de las mismas.
  • El atributo HiddenInputAttribute permite ahora especificar propiedades del modelo que deben ser renderizadas en cliente con un campo hidden.
  • Y otras mejoras, de las que selecciono sólo algunas:
    • Controller.Execute() lanzará una excepción cuando sea llamado más de una vez en la misma instancia. Dado que una instancia del controlador debe atender exclusivamente a una petición, es una medida que ayuda a prevenir problemas con contenedores IoC configurados para generar singletons, por ejemplo.
    • Inclusión de nuevos verbos HTTP, como PUT o DELETE para facilitar la creación de sistemas REST.
    • Soporte para el tipo de datos DataType.Password, haciendo que se rendericen como cuadros de edición de tipo password las propiedades que sean marcadas con este atributo.
    • Se ha establecido como editor para los booleanos anulables un desplegable con las opciones “No especificado”, “Sí” y “No”.
    • Mejoras de eficiencia, introduciendo una caché de expresiones compiladas para los helpers que utilizan sintaxis lambda fuertemente tipada.
    • (Podéis ver el resto en el documento de notas del producto).

De momento todavía no funciona con la beta de Visual Studio 2010, sólo con las versiones 2008 convenientemente servicepackeadas.

Enlaces:

Publicado en: Variable not found.

Estos contenidos se publican bajo una licencia de Creative Commons Licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España de Creative Commons

4 Comentarios:

el perucho dijo...

Saludos Jose, excelente post, como todos los de asp.net mvc (esto no quiere decir que los otros, no referente a asp.net mvc, no sean buenos)

He leido el libro Professional ASP.NET MVC 1.0 la version gratuita, y te cambia el modo de pensar las cosas, la verdad no se nada de JavaScript y mucho menos de jQuery, veo que varios controles que nos provee Ajax Tool Kit, se estan manejando por esta framework (jQuery). La verdad es otra rama del ASP.NET.

Tengo cierta inquietud o pregunta, tu como profecional o evangelizador lo cual te estas transformando con asp.net mvc, crees que es conveniente arrancar con un proyecto grandre con asp.net mvc (por supuesto siempre hay una primera vez) es decir asp.net mvc esta a la altura de asp.net webforms..?

Saludos hermano

José M. Aguilar dijo...

Hola, Perucho! Ante todo, gracias por tu amable comentario.

En mi opinión, ASP.NET MVC, aunque es mejorable (como todo) está muy bien, y aporta unas ventajas muy interesantes vistas a la separación de aspectos, testeabilidad, SEO, rendimiento, o el control total sobre el marcado y las URLs. Tendrías que valorar si estas ventajas son para tí y tu proyecto lo suficientemente importantes como para afrontar el esfuerzo que va a suponer el cambio desde Webforms.

Analiza el tipo de proyecto: no es lo mismo desarrollar Facebook que una aplicación de gestión quye utilizarán unos pocos de usuarios en una intranet; los requisitos, respecto a las ventajas que te comentaba antes, son totalmente diferentes. Analiza también los conocimientos y aptitudes del equipo de trabajo, porque si no domináis bien las tecnologías relacionadas con el desarrollo web, el esfuerzo necesario para dar el salto será mucho mayor, y lo notaréis en la productividad y posiblemente en los resultados.

En resumen, que si vas/váis a dar el salto en ese proyecto, asegúrate antes de que váis a poder hacerlo cumpliendo en calidad y plazos. Y la manera más fácil de comprobarlo sería realizando proyectos pequeños, en los que el riesgo de batacazo es menor. Desde mi punto de vista, la prudencia y el sentido común deben ir siempre por delante de nuestro entusiasmo.

Saludos.

el perucho dijo...

Saludos Jose.

Jajaja Gracias por responderme la pregunta. Creo que no existe respuesta tan sicera como esta:


En resumen, que si vas/váis a dar el salto en ese proyecto, asegúrate antes de que váis a poder hacerlo cumpliendo en calidad y plazos. Y la manera más fácil de comprobarlo sería realizando proyectos pequeños, en los que el riesgo de batacazo es menor. Desde mi punto de vista, la prudencia y el sentido común deben ir siempre por delante de nuestro entusiasmo


La verdad es que tengo ganas de darme un salto, pero me frenan varias cosas como lo son los GridView y ciertos controles. los cuales no estan o no existen en asp.net mvc

José M. Aguilar dijo...

Hola, Perucho.

Respecto al caso concreto de los grid, la forma más simple de abordarlos en MVC es con un bucle foreach de toda la vida, pero si quieres más automatismos hay soluciones muy potentes que te pueden ayudar. En esta pregunta de StackOverflow citan unos cuantos.

El resto de controles que necesitas y no existen en MVC, si son de uso común, posiblemente puedas encontrar sustitutos. Todo es ponerse :-)

Saludos.