.NET 5 lanzado oficialmente – detalles y consideraciones
Introducción
Antes de empezar y para los que menos familiarizados estén, cabe destacar que de .NET Core 3.1 pegamos el salto a .NET 5.
Es decir, no existe ni existirá .NET Core 4 que sería su nombre «lógico» esperable, y pasa a llamarse directamente .NET 5.
Los motivos fundamentales para este cambio de nombre son dos.
Por un lado, ya existe como sabrás, .NET Framework 4, así que nombrar a la nueva versión como .NET Core 4 podría acarrear malos entendidos.
Por otro lado, se elimina la palabra Core por el planteamiento que hay detrás de .NET 5 y versiones posteriores (planeándose una versión por año aproximadamente) y que soportarán muchos tipos de aplicaciones.
Pero aquí conviene destacar una cosa más, y es que con la incursión de .NET 5, ASP.NET se denomina ASP.NET Core 5. Está basada en .NET 5 pero mantiene la palabra Core con el fin de evitar la confusión con ASP.NET MVC 5 que ya existe.
Y exactamente ocurre con Entity Framework Core 5, que mantiene la palabra Core para, por el mismo motivo, evitar la confusión con Entity Framework 5 y Entity Framework 6, que también existen.
Por lo tanto, el resumen es que esta nueva versión tiene estas partes fundamentales:
- .NET 5
- ASP.NET Core 5
- Entity Framework Core 5
.NET 5 versión final, lanzado oficialmente
El lanzamiento de .NET 5 ha tenido lugar el pasado 10 de Noviembre.
Microsoft ha organizado para la ocasión, un evento online entre los días 10, 11 y 12 de Noviembre.
¿Y que podemos decir de .NET 5?. Todos los detalles de esta nueva versión, los podrás encontrar en este otro enlace.
Y si lo que quieres es empezar a utilizar .NET 5, podrás descargar esta nueva versión desde este enlace.
Respecto al roadmap de Microsoft, se planea como mencionaba anteriormente, una versión anual.
El roadmap que Microsoft anunció hace unos años cuando comenzaron a abordar .NET 5 era el siguiente (que como verás, no ha cambiado nada y se está cumpliendo a rajatabla).
¿Y qué trae de nuevo .NET 5?
Para saber qué trae de nuevo, te sugiero visitar este enlace donde se detalla todo al máximo.
Algunas de esas mejoras:
Se han realizado múltiples mejoras en C#, F# y Visual Basic.
También se han realizado mejoras respecto al namespace System.Text.Json, aunque quedan pendientes mejoras que se implementarán en .NET 6.
También se incluyen características como Single file apps o App trimming.
Y así, podríamos estar citando más y más mejoras.
Pero me gustaría destacar una en particular que tiene que ver con el esfuerzo que desde Microsoft se está realizando respecto a la mejora de rendimiento.
Según Microsoft, en .NET 5 se ha mejorado por ejemplo, el tratamiento de texto plano o Plaintext en un 38% y JSON en un 42%. Algo que puedes consultar en este enlace de Twitter.
C# 9.0
En lo que a mejoras del lenguaje C# se refiere, Microsoft ha creado la la especificación C# 9.0 que ha sido incluida en .NET 5.
Sobre esta especificación he escrito algunas entradas hace un par de meses que te recomiendo visitar si tienes curiosidad por las novedades introducidas en el lenguaje.
Podrás acceder a esta información desde este enlace principal sobre la especificación de C# 9.0.
F# 5
F# 5 forma parte de .NET 5 también, y se ha sido igualmente anunciado en la presentación de .NET 5.
Son múltiples las mejoras también, y para ello, te invito a visitar la información oficial de su anuncio en este enlace.
Visual Basic
No existe ninguna nueva característica aplicada a Visual Basic en .NET 5.
Sin embargo, el soporte de Visual Basic sí ha sido extendido en .NET 5.
Ahora podemos trabajar con aplicaciones de consola, librerías de clases, aplicaciones y librerías de WCF, controles de usuario de WCF, aplicaciones Windows, y tests unitarios con mstest, nunit y xunit.
ASP.NET Core 5.0
ASP.NET Core 5.0 es la nueva versión de ASP.NET Core alineada con .NET 5.
Se han agregado múltiples mejoras y características, incluyendo el soporte a records de C# 9.0.
También se han realizado soporte y mejoras en lo que corresponde a Blazor Server y Blazor WebAssembly, o SignalR.
Hablar de ASP.NET Core 5.0 nos obliga a hablar de gRPC también, en el que se ha mejorado considerablemente el rendimiento de gRPC y HTTP/2.
Y como no, otra de las importantes mejoras, tiene que ver con el rendimiento, el cuál ha sido mejorado de forma considerable.
Podrás acceder a la información del anuncio oficial de esta versión en este enlace.
Y si quieres más detalle, te invito a visitar este otro enlace.
Entity Framework Core 5.0
Entity Framework Core 5.0 es la nueva versión de Entity Framework alineada con .NET 5.
Esta nueva versión trae una gran cantidad de mejoras como:
many-to-many relationship mapping
Many-to-many relationship mapping
Table-per-type inheritance mapping
IndexAttribute to map indexes without the fluent API
Database collations
Filtered Include
Simple logging
Exclude tables from migrations
Split queries for related collections
Event counters
SaveChanges interception and events
Required 1:1 dependents
Migrations scripts with transactions
Rebuild SQLite tables as needed in migrations
Mapping for table-valued functions
DbContextFactory support for dependency injection
ChangeTracker.Clear to stop tracking all entities
Improved Cosmos configuration
Change-tracking proxies
Property bags
Se ha hecho hincapié en la resolución bugs y mejoras globales.
Podrás acceder a la información del anuncio oficial de esta versión en este enlace.
Visual Studio 2019 actualizado a 16.8.0
El lanzamiento de .NET 5 lleva consigo el lanzamiento de una nueva versión de Visual Studio 2019, por lo que pasamos de la anterior versión 16.7.8 publicada el mismo 10 de Noviembre, a la versión 16.8.0.
Son múltiples y muy variadas esas actualizaciones.
La más destacable es el soporte de .NET 5 como es obvio.
Podrás acceder a las anotaciones sobre esta nueva versión en este enlace.
Visual Studio 2019 for Mac actualizado a 8.8 (8.8.0.2913)
Al igual que Visual Studio 2019 para Windows, en el caso de Mac ocurre exactamente lo mismo.
El lanzamiento de .NET 5 lleva consigo el lanzamiento de una nueva versión de Visual Studio 2019 for Mac también. En este caso, la versión 8.8.
Podrás acceder a las anotaciones sobre esta nueva versión en este enlace.
Migración de ASP.NET Core 3.1 a ASP.NET Core 5
Microsoft ha elaborado un artículo sobre cómo actualizar o migrar tu proyecto de ASP.NET Core 3.1 a ASP.NET Core 5.
Este artículo puede ser consultado en este enlace y es altamente recomendable echarle un vistazo antes de comenzar a migrar tus aplicaciones de ASP.NET Core 3.1 a 5.0.
Tampoco debes dejar de lado todo lo relativo a los breaking changes de pasar de ASP.NET Core 3.1 a ASP.NET Core 5.0. Para ello, te recomiendo visitar este otro enlace.
.NET Standard y .NET 5
.NET Standard fue creado pensando en la unificación de las características del BCL (base class library) y escribir la librería en una librería concreta, pudiendo ejecutarla en cualquier sitio.
Tanto es así, que según Microsoft, el 77% de los 1000 paquetes más usados, soportan .NET Standard, y en NuGet.org, su adopción en los últimos 6 meses, ha sido de un 58%.
Pero hablando de .NET 5 en concreto, cabe destacar que .NET 5 no reemplaza a .NET Standard.
Sin embargo, si queremos trabajar con .NET Core 3.1 y .NET 5 al mismo tiempo, deberemos tener en cuenta trabajar con .NET Standard 2.1.
.NET Standard 2.1 será la última versión de .NET Standard, y .NET 5 y todas las futuras versiones de .NET continuarán soportando .NET Standard 2.1 y anteriores.
Para más información, te recomiendo visitar este enlace o este otro con algún detalle adicional e interesante.
¿Cómo podemos programar en .NET 5?
Además de Visual Studio 2019 en su última versión, también podemos descargar y usar Visual Studio Code.
En el caso de querer utilizar Visual Studio Code, nos podemos apoyar incluso en alguna extensión que nos facilite la tarea de desarrollo, como por ejemplo C# Snippets, la cuál he actualizado para soportar algunas de las características de C# 9.
Si somos un poco más frikis, podemos hacer uso de la línea de comandos directamente.
De todos los modos, te dejo este artículo que escribí hace algunas fechas de cómo probar .NET 5 por si te sirve.
Lo que puedes echar en falta…
Aunque hemos contado casi todo, cosas buenas, lo que nadie quiere normalmente contar son las malas noticias o aquellas cosas o aspectos que no son tan positivos.
Ante esto, es conveniente comentarlo pero con pinzas, porque ni todo es blanco ni todo es negro, y a veces, hay grises.
Me explico.
Existen tecnologías dentro de .NET Framework 4 que no están ni van a estar en .NET 5 por parte de Microsoft.
De esta forma, no existen planes para migrar las siguientes tecnologías:
- Web Forms
- WCF – Windows Communication Foundation
- WF – Windows Workflow
Sin embargo, todas ellas están más o menos cubiertas por nuevas tecnologías, de esta manera:
- Web Forms estará cubierto por ASP.NET Core Blazor o Razor Pages
- WCF estará cubierto por gRPC
- WF estará cubierto por un proyecto open-source llamado CoreWF
.NET is open-source
Casi para terminar, comentar que .NET es open-source, es decir, se nutre de muchísimas aportaciones a nivel general y particular.
Desde sugerencias y feedback, bugs, soluciones a problemas, etc., hasta documentación, traducción de términos, etc.
Es por eso que Microsoft ha creado una página web en Azure en la que agradece a un montón de personas sus contribuciones.
Como curiosidad, puedes acceder a esta información en este enlace.
Como añadido, el código de la página web anterior, es accesible en este otro enlace.
Algunas recomendaciones personales
A modo de conclusión y para repasar alguna cosa más que considero importante…
En marzo de 2020 escribía una entrada en mi blog hablando sobre el fin de soporte de .NET 3.
Antes de entrar en detalle, recordemos qué significa LTS o long-term support.
Se trata de la denominación que da Microsoft para otorgar a los productos, 3 años de soporte después de su lanzamiento.
Actualmente tenemos .NET Core 3.1 como LTS, y por otro lado, Microsoft ha publicado el pasado día 10 .NET 5 (pero no como LTS), y en Noviembre de 2021, Microsoft publicará .NET 6 como LTS.
Puede parecer un poco lioso la verdad, pero si lo pensamos detenidamente y miramos la imagen del roadmap que ponía al principio de esta entrada, queda todo muy claro.
Así que aquí la pregunta sería… ¿y qué hacemos o qué es más recomendable?.
Pues lo cierto es que dependerá.
A no ser que sea necesario por diferentes motivos (estratégicos, presupuesto, comercial, etc), consideraría migrar a .NET Core 3.1 sino lo has hecho ya, y luego dar el salto a .NET 6 el año próximo.
Ten en cuenta que el soporte de .NET Core 3.1 finalizará el 3 de Diciembre de 2022, así que tendremos tiempo suficiente para migrar a .NET 6.
Pero, ¿pasa algo malo si migro ya a .NET 5?
Para nada.
.NET 5 es estable y robusto, pero ten en cuenta que el soporte de .NET 5 finalizará a los tres meses de aparecer .NET 6.
Así que si te compensa el esfuerzo de migrar ya a .NET 5, y luego a .NET 6, puedes hacerlo sin problemas, pero sino, puedes esperar a hacerlo a .NET 6 más adelante.
Para saber más sobre LTS, te sugiero visitar este enlace en el que ya aparece .NET 5.
El caso es que la implicación de LTS es a veces más profunda de lo que se cree.
Normalmente, AWS (Amazon Web Services) no da soporte a versiones que no sean LTS, y en el caso de Azure Functions, mejor poneros una captura del tweet de Anthony Chu (PM de Azure Functions) para que entendáis las implicaciones que pueden acarrear.
Espero que todo esto te haya resultado útil.
Happy Coding!