ASP.NET Core, es el nuevo framework para desarrollo web de código abierto, modular, que puede ejecutarse en multi-plataforma Windows, Linux o Mac y ha sido escrito desde cero para hacerlo mucho más ligero, optimizado para la nube y también trabajar desde CLI (linea de comandos «dotnet») que explicaré en otro post.
En realidad, debajo del capó, es una gran colección de paquetes NuGet que se agregan al proyecto, están instalados en nuestro PC, con las diferentes versiones de .NET Core que vayamos actualizando y podemos encontrarlos dentro de la carpeta «C:\Program Files\dotnet».
ACTUALIZADO 5-ENE-2018 (NET CORE 2.0): En ASP.NET Core 2.0, los proyectos creados desde Visual Studio 2017 o desde linea de comandos CLI con «dotnet new mvc», incluyen una sola referencia al paquete Microsoft.AspNetCore.All, un «metapaquete» que hace referencia a todos los otros paquetes de ASP.NET Core que necesita para un proyecto típico. De esta forma, nos ahorramos tener cientos de referencias de paquetes en el archivo de proyecto.
ACTUALIZADO 1-AGO-2018 (NET CORE 2.1): Recomendado Migración a NET Core 2.1 de todos los proyectos, dejo enlaces oficiales con la explicación, ya que, Microsoft dejará de dar soporte a .NET Core 2.0 a partir del próximo 1 de Septiembre de 2018.
Noticia: net-core-2-0-will-reach-end-of-life-on-september-1-2018/
Como realizar la migración: https://docs.microsoft.com/es-es/aspnet/core/migration/20_21?view=aspnetcore-2.1
ACTUALIZADO 1-JUN-2019 (NET CORE 2.2): Recomendado Migración a NET Core 2.2 de todos los proyectos, para estar alineados con la nueva versión y realizar la migración visitar: https://docs.microsoft.com/es-es/aspnet/core/migration/21-to-22?view=aspnetcore-2.2
ACTUALIZADO 1-JUL-2019 (NET CORE 3.0): Recomendado comenzar a planificar la migración de aplicaciones a NET Core 3.0 de todos los proyectos. Para ver los pasos y realizar la migración visitar: https://docs.microsoft.com/es-es/aspnet/core/migration/22-to-30?view=aspnetcore-2.2
ACTUALIZADO 1-SEP-2019 (NET CORE 3.0): Novedades de NET Core 3.0 preliminar antes del lanzamiento definitivo en la DotNetConf 2019: https://docs.microsoft.com/es-es/dotnet/core/whats-new/dotnet-core-3-0
¿Deberia migrar mis aplicaciones .NET?
La respuesta es complicada y siempre dependerá de las necesidades y el escenario actual que tengamos, primero debemos auditar para decidir si vale la pena, mejor construir de nuevo la aplicación o dockerizarla.
Dejo esta respuesta, que me gusto bastante:
«Ever since ASP.NET Core came out, a big deal has been made that it runs on Linux and we can finally deploy ASP.NET inside Docker containers. While there’s no doubt that it’s a huge step forward for the platform; there’s one thing that is often overlooked… This is only good news for green field projects and apps that can be ported to ASP.NET Core.
The majority of existing ASP.NET apps will never be ported to ASP.NET Core. There are many reasons an app can’t be ported:
- Too many dependencies on System.Web
- WebForms!
- Third party dependencies that haven’t been ported to .NET Core
- It runs perfectly fine in .NET 4.6 and earlier and doesn’t make financial sense to port it
This is why Windows containers are so important. They let us bake our existing applications into Docker images and deploy them with the same tools as the rest of the Docker ecosystem.»
¿Evolución o Revolución?
La respuesta rotunda es revolución, la forma de crear aplicaciones web con ASP.NET Core es muy diferente de como se programan desde el inicio con ASP, WebForms y también MVC/WebApi. Como vemos es este gráfico de evolución de ASP.NET
La información sobre el presente y el futuro está disponible en los informes de la DotNetConf 2016. Y como digo siempre una imagen vale más que 1000 palabras, en la imagen siguiente vemos el esquema general de la plataforma ASP.NET Core.
Como mencioné al principio, ASP.NET Core es un framework modular y por lo tanto distribuido con paquetes NuGet (nos olvidamos del monolítico system.web.dll). Esto nos permite incluir solo aquellos paquetes que se requieren en nuestra aplicación para hacerla más ligera y optimizada para la nube.
ASP.NET Core startup y Configuración
El arranque de una aplicación ASP.NET Core no deja de ser simple, pero es importante conocer el flujo de inicio que vemos en este diagrama:
Otro aspecto importante es que las aplicaciones ASP.NET Core se puede ejecutar tanto en Full Framework (FW 4.x) con en Core CLR y estan diseñadas para desplegarse en la nube asi como en sistemas on-premises.
Características de ASP.NET Core
Info extraída desde MsDocs, ASP.NET Core incluye las siguientes caracteristicas:
Comandos «dotnet» para Multi-Project Solution
Muchas veces, necesitamos crear varios proyectos y unirlos en una solución de Visual Studio, la forma simple de hacerlo desde la CLI la encontramos en este articulo: https://www.skylinetechnologies.com/Blog/Skyline-Blog/February_2018/how-to-use-dot-net-core-cli-create-multi-project
Por último, un pequeño consejo, comenzar a usarlo y probarlo porque sin lugar a dudas, es la apuesta de futuro para desarrollar nuevos proyectos web de Microsoft.