Saltar al contenido

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

17 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 Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 22 de noviembre de 2016
ASP.NET CoreComo sabéis, hace unos días se presento en el evento Connect() la primera revisión de ASP.NET Core, versionada como 1.1.0.

A continuación desgranaremos un poco qué se incluye en esta entrega, pero gracias al uso de versionado semántico, sin entrar en más detalles ya podemos saber que esta nueva versión añade características adicionales y mejoras compatibles hacia atrás, por lo que no tendríamos que preocuparnos por romper algo si actualizamos a ella (¡al menos en teoría, claro! ;)).


La relación completa de novedades podéis encontrarlas en el post oficial y el documento de release notes, pero podríamos destacar:
  • Importantes mejoras rendimiento, situando el tándem ASP.NET Core/Kestrel sobre Linux en el grupo de los 10 frameworks más rápidos de TechEmpower (eso sí, en pruebas limitadas a responder mensajes "Hello, world!"), reportando un rendimiento 760 veces mejor que hace un año.
            
  • Nuevos middlewares:
           
    • Reescritura de URLs, que permiten reescribir y redirigir peticiones según especificaciones proporcionadas en formatos comunes, como los usados por los módulos de rewriting de IIS o Apache, o incluso codificadas directamente en C#. Podéis ver un un ejemplo de uso en GitHub.
       
    • Cacheado de respuestas, algo parecido a lo que conseguíamos en ASP.NET "clásico" mediante el filtro [OutputCache] pero implementado en forma de middleware, capaz de cachear en memoria del servidor las respuestas de las peticiones, para poder responder más rápidamente a posteriori. Hay un ejemplo de su utilización en GitHub.
       
    • Compresión de respuestas. Aunque es una tarea que normalmente realizará el servidor frontal (IIS, NGINX…), este middleware que permite capturar las las respuestas HTTP y sustituirlas por una versión comprimida mediante GZIP.  Podemos ver un ejemplo de uso aquí.
       
  • Un nuevo host basado en Web Listeners de Windows. Aunque sabemos que Kestrel es el servidor "oficial" de aplicaciones ASP.NET Core, sus características multiplataforma hacen que no sea posible disponer en él de funciones propias de Windows, como la autenticación integrada, port sharing, HTTPS con SNI, y algunas otras. Este servidor se distribuye también como paquete Nuget, y se incluye en el proyecto de la misma forma que Kestrel, como observamos en el siguiente ejemplo.
     
  • Nuevas características en MVC:
           
    • Uso tag helpers para invocar View Components, una funcionalidad muy interesante que mezcla la expresividad y agilidad de codificación de tag helpers con la potencia de los view componentes para ofrecer un código en la vista más legible y elegante. Es decir, que podremos sustituir llamadas a @Component.InvokeAsync() por tag helpers que consigan el mismo efecto de forma declarativa.
                  
    • Middlewares como filtros MVC, que aunque pueda resultar algo extraño al principio, tiene su sentido porque filtros y middlewares son conceptualmente similares. Mediante esta nueva capacidad, podremos utilizar el filtro [MiddlewareFilter] para añadir middlewares antes de la ejecución de acciones o controladores a los que se apliquen. De esta forma, funcionalidades que están disponibles en forma de middleware podremos aplicarlas como si de filtros se tratasen.
                  
    • Proveedor de TempData basado en cookies, la implementación a nivel de plataforma de una necesidad bastante frecuente como era la posibilidad de almacenar estos datos temporales en una cookie del cliente, en lugar de hacerlo en la memoria del servidor.
      services.AddMvc();
      services.AddSingleton<ITempDataProvider, CookieTempDataProvider>();
    • Precompilación de vistas Razor mediante la orden de línea de comandos "dotnet razor-precompile", de forma que el resultado de esta compilación pueda ser distribuido con la aplicación en lugar de esperar a que sean compiladas en tiempo de ejecución. Estas órdenes pueden ser incluidas en el proceso de build de forma que se realicen automáticamente antes de publicar la aplicación.
                   
  • Y también se han introducido mejoras para Azure, como un proveedor de logging específico, un proveedor de configuración para Azure Key Vaults o repositorios para Data Protection Keys en Redis y Azure Storage.
Por último, para actualizar un proyecto a esta versión bastará con:
  • imageInstalar el SDK de .NET Core 1.1 disponible en la página de descargas de .NET Core (o las herramientas para la versión de Visual Studio que utilicéis).
     
  • Tras ello, en los proyectos que usen .NET Core, será necesario actualizar las referencias en el archivo de configuración (todavía project.json) a "netcoreapp1.1" y versión "1.1.0".
           
  • Y, finalmente, actualizar a la última versión los paquetes Nuget de ASP.NET Core que estemos utilizando.
Publicado en Variable not found.

Aún no hay comentarios, ¡sé el primero!