Novità di .NET 5
.NET 5 è la prossima versione principale di .NET Core successiva alla 3.1. Questa versione è stata denominata .NET 5 anziché .NET Core 4 per due motivi:
- I numeri di versione 4.x sono stati ignorati per evitare confusione con .NET Framework 4.x.
- "Core" è stato eliminato dal nome per sottolineare che questa è l'implementazione principale di .NET in futuro. .NET 5 supporta più tipi di app e più piattaforme rispetto a .NET Core o .NET Framework.
ASP.NET Core 5.0 si basa su .NET 5, ma mantiene il nome "Core" per evitare confusione con ASP.NET MVC 5. Analogamente, Entity Framework Core 5.0 mantiene il nome "Core" per evitare confusione con Entity Framework 5 e 6.
.NET 5 include i miglioramenti seguenti e le nuove funzionalità rispetto a .NET Core 3.1:
- Aggiornamenti C#
- aggiornamenti F#
- gli aggiornamenti di Visual Basic
- System.Text.Json nuove funzionalità
- app a file singolo
- Ottimizzazione dell'app
- Intrinseci di Windows Arm64 e Arm64
- Supporto agli strumenti per il debug dei dump
- Le librerie di runtime sono 80% annotate per tipi di riferimento nullable
- Miglioramenti delle prestazioni:
- Garbage Collection (GC)
- System.Text.Json
- System.Text.RegularExpressions
- Pooling di ValueTask asincroni
- ottimizzazioni delle dimensioni del contenitore
- Molte altre aree
.NET 5 non sostituisce .NET Framework
.NET 5 e versioni successive sono l'implementazione principale di .NET in futuro, ma .NET Framework 4.x è ancora supportato. Non sono previsti piani per convertire le tecnologie seguenti da .NET Framework a .NET 5, ma esistono alternative in .NET:
Tecnologia | Alternativa consigliata |
---|---|
Web Forme | ASP.NET Core Blazor o Razor Pages |
Flusso di lavoro di Windows (WF) | Elsa-Workflows |
Windows Communication Foundation
L'implementazione originale di windows Communication Foundation (WCF) era supportata solo in Windows. Tuttavia, è disponibile una porta client da .NET Foundation. È interamente open source, multipiattaforma e supportato da Microsoft. I pacchetti NuGet principali sono elencati di seguito:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
I componenti server che completano le librerie client indicate sopra sono disponibili tramite CoreWCF. A partire da aprile 2022, CoreWCF è ufficialmente supportato da Microsoft. Tuttavia, per un'alternativa a WCF, prendere in considerazione gRPC.
.NET 5 non sostituisce .NET Standard
Lo sviluppo di nuove applicazioni può specificare il moniker del framework di destinazione net5.0
(TFM) per tutti i tipi di progetto, incluse le librerie di classi. La condivisione del codice tra carichi di lavoro .NET 5 è semplificata: è sufficiente usare net5.0
TFM.
Per le app e le librerie .NET 5, il TFM net5.0
combina e sostituisce i TFM netcoreapp
e netstandard
. Tuttavia, se si prevede di condividere il codice tra carichi di lavoro .NET Framework, .NET Core e .NET 5, è possibile specificare netstandard2.0
come TFM. Per altre informazioni, vedere .NET Standard.
Aggiornamenti C#
Gli sviluppatori che scrivono app .NET 5 avranno accesso alla versione e alle funzionalità C# più recenti. .NET 5 è associato a C# 9, che offre molte nuove funzionalità al linguaggio. Ecco alcuni punti salienti:
Record: tipi di riferimento con semantica di uguaglianza basata su valori e mutazioni non distruttive supportate da una nuova espressione
with
.Corrispondenza del modello relazionale: estende le funzionalità di corrispondenza dei modelli agli operatori relazionali per valutazioni ed espressioni comparative, inclusi i modelli logici e le nuove parole chiave
and
,or
enot
.istruzioni di primo livello: come mezzo per accelerare l'adozione e l'apprendimento di C#, il metodo
Main
può essere omesso e un'applicazione semplice come l'esempio seguente è valida:System.Console.Write("Hello world!");
Puntatori di funzione: costrutti di linguaggio che espongono i seguenti opcode del linguaggio intermedio (IL):
ldftn
ecalli
.
Per altre informazioni sulle funzionalità di C# 9 disponibili, vedere Novità di C# 9.
Generatori di origine
Oltre ad alcune delle nuove funzionalità C# evidenziate, i generatori di origine stanno facendo il loro modo nei progetti di sviluppo. I generatori di origine consentono l'esecuzione del codice durante la compilazione per controllare il programma e produrre file aggiuntivi compilati insieme al resto del codice.
Per ulteriori informazioni sui generatori di codice sorgente, vedere Introduzione ai generatori di codice C# e Esempi di generatori di codice C#.
Aggiornamenti F#
F# è il linguaggio di programmazione funzionale .NET e con .NET 5 gli sviluppatori hanno accesso a F# 5. Una delle nuove funzionalità è costituita da stringhe interpolate, simili alle stringhe interpolate in C# e anche a JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Oltre all'interpolazione di stringhe di base, è disponibile l'interpolazione tipizzata. Con l'interpolazione tipizzata, un determinato tipo deve corrispondere all'identificatore di formato.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Questo formato è simile alla funzione sprintf
che formatta una stringa in base agli input con controllo del tipo.
Per altre informazioni, vedere Novità in F# 5.
Aggiornamenti di Visual Basic
Non sono disponibili nuove funzionalità del linguaggio per Visual Basic in .NET 5. Tuttavia, con .NET 5, il supporto di Visual Basic viene esteso a:
Descrizione | parametro dotnet new |
---|---|
Applicazione console | console |
Libreria di classi | classlib |
Applicazione WPF | wpf |
Libreria di classi WPF | wpflib |
Libreria di controlli personalizzati WPF | wpfcustomcontrollib |
Libreria di controlli utente WPF | wpfusercontrollib |
Applicazione Windows Form (WinForms) | winforms |
Libreria di classi Windows Form (WinForms) | winformslib |
Progetto unit test | mstest |
Progetto di test NUnit 3 | nunit |
Elemento di test NUnit 3 | nunit-test |
Progetto di test xUnit | xunit |
Per altre informazioni sui modelli di progetto dall'interfaccia della riga di comando di .NET, vedere dotnet new
.
Nuove funzionalità di System.Text.Json
Sono disponibili nuove funzionalità in e per System.Text.Json:
- Mantenere i riferimenti e gestire riferimenti circolari
- metodi di estensione di serializzazione in HttpClient
- Consentire o scrivere numeri tra virgolette
- Supportare i tipi non modificabili e i record C# 9
- Supportare le funzioni di accesso non pubbliche
- campi di supporto
- ignorare le proprietà in modo condizionale
- Supportare dizionari non di tipo stringa
- Consenti ai convertitori personalizzati di gestire il valore nullo
- Copia JsonSerializerOptions
- Creare JsonSerializerOptions con impostazioni predefinite Web