Novedades de .NET 5
.NET 5 es la próxima versión principal de .NET Core después de la versión 3.1. Esta versión se denominaba .NET 5 en lugar de .NET Core 4 por dos motivos:
- Se omitieron los números de versión 4.x para evitar confusiones con .NET Framework 4.x.
- "Core" se quitó del nombre para resaltar que se trata de la implementación principal de .NET en el futuro. .NET 5 admite más tipos de aplicaciones y más plataformas que .NET Core o .NET Framework.
ASP.NET Core 5.0 se basa en .NET 5, pero conserva el nombre "Core" para evitar confundirlo con ASP.NET MVC 5. Del mismo modo, Entity Framework Core 5.0 conserva el nombre "Core" para evitar confundirlo con Entity Framework 5 y 6.
.NET 5 incluye las siguientes mejoras y nuevas características en comparación con .NET Core 3.1:
- Actualizaciones de C#
- Actualizaciones de F#
- Actualizaciones de Visual Basic
- nuevas características de System.Text.Json
- Aplicaciones de archivo único
- Recorte de aplicaciones
- Aspectos intrínsecos de Windows ARM64 y ARM64
- Compatibilidad con herramientas para la depuración de volcados de memoria
- Las bibliotecas en tiempo de ejecución se anotan en un 80 % para los tipos de referencia que aceptan valores NULL
- Mejoras de rendimiento:
- Recolección de elementos no utilizados (GC)
- System.Text.Json
- System.Text.RegularExpressions
- Agrupación asincrónica de ValueTask
- Optimizaciones del tamaño del contenedor
- Muchas más áreas
.NET 5 no reemplaza .NET Framework
.NET 5 y versiones posteriores son la implementación principal de .NET en adelante, pero todavía se admite .NET Framework 4.x. No hay planes para migrar las siguientes tecnologías de .NET Framework a .NET 5, pero hay alternativas en .NET:
Tecnología | Alternativa recomendada |
---|---|
Formularios web | ASP.NET Core Blazor o Razor Pages |
Windows Workflow (WF) | Flujos de trabajo de Elsa |
Windows Communication Foundation
La implementación original de Windows Communication Foundation (WCF) solo se admite en Windows. Sin embargo, hay un puerto de cliente disponible en .NET Foundation. Es totalmente código abierto, multiplataforma y compatible con Microsoft. Los paquetes NuGet principales se enumeran a continuación:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Los componentes de servidor que complementan las bibliotecas cliente mencionadas anteriormente están disponibles a través de CoreWCF. A partir de abril de 2022, CoreWCF es oficialmente compatible con Microsoft. Sin embargo, como una alternativa a WCF, considere usar gRPC.
.NET 5 no reemplaza .NET Standard
El desarrollo de aplicaciones nuevo puede especificar el moniker de la plataforma de destino (TFM) net5.0
para todos los tipos de proyecto, incluidas las bibliotecas de clases. El uso compartido de código entre cargas de trabajo de .NET 5 se simplifica: todo lo que necesita es el TFM net5.0
.
En el caso de las aplicaciones y bibliotecas de .NET 5, el TFM net5.0
combina y reemplaza los TFMs netcoreapp
y netstandard
. Sin embargo, si planea compartir código entre las cargas de trabajo de .NET Framework, .NET Core y .NET 5, puede hacerlo especificando netstandard2.0
como TFM. Para obtener más información, consulte .NET Standard.
Actualizaciones de C#
Los desarrolladores que escriben aplicaciones de .NET 5 tendrán acceso a la versión y características más recientes de C#. .NET 5 se empareja con C# 9, lo que aporta muchas características nuevas al lenguaje. Estos son algunos aspectos destacados:
Registros: tipos de referencia con semántica de igualdad basada en valores y mutación no destructiva que admite una expresión
with
nueva.coincidencia de patrones relacionales: amplía las funcionalidades de coincidencia de patrones a operadores relacionales para evaluaciones comparativas y expresiones, incluidos los patrones lógicos: nuevas palabras clave
and
,or
ynot
.instrucciones de nivel superior: como medio para acelerar la adopción y el aprendizaje de C#, se puede omitir el método
Main
y una aplicación tan sencilla como el ejemplo siguiente es válida:System.Console.Write("Hello world!");
Punteros de función: construcciones de lenguaje que exponen los siguientes códigos de operación de lenguaje intermedio (IL):
ldftn
ycalli
.
Para obtener más información sobre las características disponibles de C# 9, consulte Novedades de C# 9.
Generadores de código fuente
Además de algunas de las nuevas características resaltadas de C#, los generadores de código están abriéndose camino en los proyectos de los desarrolladores. Los generadores de código fuente permiten que el código que se ejecute durante la compilación inspeccione el programa y genere archivos adicionales que se compilan junto con el resto del código.
Para obtener más información sobre los generadores de origen, consulte Introducción a los generadores de origen de C# y ejemplos de generadores de origen de C# .
Actualizaciones de F#
F# es el lenguaje de programación funcional de .NET y, con .NET 5, los desarrolladores tienen acceso a F# 5. Una de las nuevas características es cadenas interpoladas, similares a las cadenas interpoladas en C#, e incluso JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Además de la interpolación de cadenas básica, también está la interpolación con tipo. Con la interpolación tipada, un tipo determinado debe coincidir con el especificador de formato.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Este formato es similar a la función sprintf
que da formato a una cadena basada en entradas seguras de tipos.
Para obtener más información, vea Novedades de F# 5.
Actualizaciones de Visual Basic
No hay nuevas características de lenguaje para Visual Basic en .NET 5. Sin embargo, con .NET 5, la compatibilidad con Visual Basic se extiende a:
Descripción | parámetro dotnet new |
---|---|
Aplicación de consola | console |
Biblioteca de clases | classlib |
Aplicación WPF | wpf |
Biblioteca de clases de WPF | wpflib |
Biblioteca de controles personalizados de WPF | wpfcustomcontrollib |
Biblioteca de control de usuarios de WPF | wpfusercontrollib |
Aplicación de Windows Forms (WinForms) | winforms |
Biblioteca de clases de Windows Forms (WinForms) | winformslib |
Proyecto de prueba unitaria | mstest |
Proyecto de prueba de NUnit 3 | nunit |
Elemento de prueba NUnit 3 | nunit-test |
Proyecto de prueba de xUnit | xunit |
Para obtener más información sobre las plantillas de proyecto de la CLI de .NET, consulte dotnet new
.
Características nuevas de System.Text.Json
Hay nuevas características en y para System.Text.Json:
- Conservar referencias y controlar referencias circulares
- Métodos de extensión de serialización en HttpClient
- Permitir o escribir números entre comillas
- Compatibilidad con tipos inmutables y registros de C# 9
- Compatibilidad con descriptores de acceso de propiedad que no son públicos
- Campos de soporte técnico
- Omitir propiedades de forma condicional
- Admite diccionarios que no son de clave de cadena
- Permitir que los convertidores personalizados manejen los valores nulos
- Copia de JsonSerializerOptions
- Creación de JsonSerializerOptions con valores predeterminados web