Novedades de .NET 5
.NET 5 es la próxima versión principal de .NET Core, que sigue a la 3.1. Esta versión nueva se denomina .NET 5 en lugar de .NET Core 4 por dos motivos:
- Hemos omitido los números de versión 4.x para evitar confusiones con .NET Framework 4.x.
- Hemos eliminado "Core" del nombre para resaltar que esta es 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 la confusión con ASP.NET MVC 5. Del mismo modo, Entity Framework Core 5.0 conserva el nombre "Core" para evitar la confusión con Entity Framework 5 y 6.
.NET 5 incluye las mejoras siguientes y características nuevas en comparación con .NET Core 3.1:
- Actualizaciones de C#
- Actualizaciones de F#
- Actualizaciones de Visual Basic
- Características nuevas 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:
.NET 5 no reemplaza a .NET Framework
.NET 5 y versiones posteriores son la implementación principal de .NET en el futuro, pero .NET Framework 4.x sigue siendo compatible. No hay ningún plan para migrar las siguientes tecnologías de .NET Framework a .NET 5, pero hay alternativas en .NET:
Technology | Alternativa recomendada |
---|---|
formularios Web Forms | ASP.NET Core Blazor o Razor Pages |
Windows Workflow (WF) | Elsa-Workflows |
Windows Communication Foundation
La implementación original de Windows Communication Foundation (WCF) solo se admitía en Windows. Pero hay un puerto de cliente disponible en .NET Foundation. Es de código abierto, multiplataforma y compatible con Microsoft en su totalidad. Los paquetes NuGet principales se muestran 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 de cliente mencionadas anteriormente están disponibles mediante CoreWCF. A partir de abril de 2022, Microsoft admite CoreWCF oficialmente. Como alternativa a WCF, puede usar gRPC.
.NET 5 no reemplaza a .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 TFM netcoreapp
y netstandard
. Pero si tiene previsto compartir código entre cargas de trabajo de .NET Framework, .NET Core y .NET 5, puede hacerlo especificando netstandard2.0
como TFM. Para 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 está emparejado con C# 9, 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 capacidades de coincidencia de patrones a los operadores relacionales para las 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 la 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, vea Novedades de C# 9.
Generadores de origen
Además de algunas de las nuevas características de C# resaltadas, los generadores de origen se están incorporando a los proyectos de desarrolladores. Los generadores de origen permiten que el código que se ejecuta durante la compilación inspeccione el programa y produzca archivos adicionales que se compilan junto con el resto del código.
Para obtener más información sobre los generadores de origen, vea 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 características nuevas son las cadenas interpoladas, que son similares a las cadenas interpoladas en C# e incluso en 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. Gracias a la interpolación con tipo, 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 aplica formato a una cadena basada en entradas con seguridad de tipos.
Para obtener más información, vea Novedades de F# 5.
Actualizaciones de Visual Basic
No hay características de lenguaje nuevas para Visual Basic en .NET 5. Pero con .NET 5, la compatibilidad con Visual Basic se amplía a lo siguiente:
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 WPF | wpfcustomcontrollib |
Biblioteca de controles de usuario 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 de 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, vea dotnet new
.
Características nuevas de System.Text.Json
Hay características nuevas en y para System.Text.Json:
- Conservación de las referencias y administración de las referencias circulares
- Métodos de extensión HttpClient y HttpContent
- 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
- Compatibilidad con campos
- Omitir propiedades de forma condicional
- Compatibilidad con diccionarios con clave que no es de cadena
- Permitir que los convertidores personalizados controlen valores NULL
- Copia de JsonSerializerOptions
- Crear JsonSerializerOptions con valores predeterminados web