Поделиться через


Новые возможности .NET 5

.NET 5 — следующий основной выпуск .NET Core после версии 3.1. Этот выпуск был назван .NET 5 вместо .NET Core 4 по двум причинам:

  • Номера версий 4.x пропущены, чтобы избежать путаницы с .NET Framework 4.x.
  • Название "Core" было удалено, чтобы подчеркнуть, что именно эта реализация .NET является основной на будущее. .NET 5 поддерживает больше типов приложений и больше платформ, чем .NET Core или .NET Framework.

ASP.NET Core 5.0 основан на .NET 5, но сохраняет имя Core, чтобы избежать путаницы с ASP.NET MVC 5. Аналогичным образом Entity Framework Core 5.0 сохраняет имя Core, чтобы избежать путаницы с Entity Framework 5 и 6.

.NET 5 включает следующие улучшения и новые функции по сравнению с .NET Core 3.1:

.NET 5 не заменяет .NET Framework

.NET 5 и более поздних версий являются основной реализацией .NET, но .NET Framework 4.x по-прежнему поддерживается. Нет планов перенести следующие технологии из .NET Framework в .NET 5, но в .NET существуют альтернативные варианты.

Технологии Рекомендуемая альтернатива
Веб-формы ASP.NET Core Blazor или Razor Pages
Рабочий процесс Windows (WF) Elsa-Workflows

Windows Communication Foundation

Исходная реализация Windows Communication Foundation (WCF) была поддерживается только в Windows. Однако есть клиентский порт, доступный из .NET Foundation. Это полностью с открытым исходным кодом, кроссплатформенной и поддерживаемой корпорацией Майкрософт. Ниже перечислены основные пакеты NuGet:

Серверные компоненты, дополняющие упомянутые выше клиентские библиотеки, доступны через CoreWCF. По состоянию на апрель 2022 года CoreWCF официально поддерживается корпорацией Майкрософт. Однако в качестве альтернативы WCF рассмотрите gRPC.

.NET 5 не заменяет .NET Standard

В новых приложениях можно указать net5.0 Target Framework Moniker (TFM) для всех типов проектов, включая и библиотеки классов. Код совместного использования между рабочими нагрузками .NET 5 упрощен: все, что вам нужно, — это net5.0 TFM.

Для приложений и библиотек .NET 5 net5.0 TFM объединяет и заменяет netcoreapp и netstandard TFM. Однако если вы планируете совместно использовать код между рабочими нагрузками .NET Framework, .NET Core и .NET 5, это можно сделать, указав netstandard2.0 в качестве TFM. Дополнительные сведения см. в .NET Standard.

Обновления C#

Разработчики, пишущие приложения .NET 5, получат доступ к последней версии и функциям C#. Платформа .NET 5 связана с C# 9, которая предоставляет множество новых функций на языке. Ниже приведены некоторые основные моменты.

  • записи: ссылочные типы с семантикой равенства на основе значений и неразрушительной мутацией, поддерживаемой новым выражением with.

  • сопоставление реляционных шаблонов: расширяет возможности сопоставления шаблонов реляционным операторам для сравнения вычислений и выражений, включая логические шаблоны — новые ключевые слова and, orи not.

  • инструкции верхнего уровня: как средство ускорения внедрения и обучения C#, метод Main может быть опущен, и приложение так же просто, как показано в следующем примере:

    System.Console.Write("Hello world!");
    
  • указатели функций: языковые конструкции, предоставляющие следующие опкоды промежуточного языка (IL): ldftn и calli.

Дополнительные сведения о доступных функциях C# 9 см. в статье Новые возможности C# 9.

Генераторы источников

Помимо некоторых выделенных новых функций C#, генераторы источников делают свой путь в проекты разработчиков. Генераторы источников позволяют выполнять код, выполняющийся во время компиляции, для проверки программы и создания дополнительных файлов, скомпилированных вместе с остальным кодом.

Более подробную информацию о генераторах исходного кода см. в статьях Введение в генераторы исходного кода C# и Примеры генераторов исходного кода C#.

Обновления F#

F# — это функциональный язык программирования .NET, и с .NET 5 разработчики имеют доступ к F# 5. Одна из новых функций — интерполированные строки, аналогичные интерполированным строкам в C#, и даже JavaScript.

let name = "David"
let age = 36
let message = $"{name} is {age} years old."

Помимо базовой интерполяции строк, существует типизированная интерполяция. При типизированной интерполяции заданный тип должен соответствовать спецификаторам формата.

let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."

Этот формат аналогичен функции sprintf, которая форматирует строку на основе типобезопасных входных данных.

Дополнительные сведения см. в статье Новые возможности в F# 5.

Обновления Visual Basic

В .NET 5 нет новых возможностей языка для Visual Basic. Однако при использовании .NET 5 поддержка Visual Basic распространяется на:

Описание параметр dotnet new
Консольное приложение console
Библиотека классов classlib
Приложение WPF wpf
Библиотека классов WPF wpflib
Библиотека пользовательского элемента управления WPF wpfcustomcontrollib
Библиотека пользовательского элемента управления WPF wpfusercontrollib
Приложение Windows Forms (WinForms) winforms
Библиотека классов Windows Forms (WinForms) winformslib
Проект модульного теста mstest
Тестовый проект NUnit 3 nunit
Тестовый элемент NUnit 3 nunit-test
Тестовый проект xUnit xunit

Дополнительные сведения о шаблонах проектов из .NET CLI см. в dotnet new.

Новые возможности System.Text.Json

Существуют новые функции в System.Text.Json:

См. также