Новые возможности .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:
- обновления для C#
- обновления F#
- обновления Visual Basic
- Новые функции System.Text.Json
- однофайловые приложения
- оптимизацию приложений
- Встроенные компоненты Windows Arm64 и Arm64
- Поддержка инструментов для отладки дампа
- Библиотеки среды выполнения 80% аннотированы для ссылочных типов , допускающих значение NULL,
- Улучшения производительности:
- сборка мусора (GC)
- System.Text.Json
- System.Text.RegularExpressions
- Пул асинхронных ValueTask
- оптимизация размера контейнера
- гораздо больше областей
.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:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Серверные компоненты, дополняющие упомянутые выше клиентские библиотеки, доступны через 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:
- Сохранение ссылок и обработка циклических ссылок
- методы расширения сериализации в httpClient
- Разрешить или записать числа в кавычках
- Поддержка неизменяемых типов и записей C# 9
- Поддержка недоступных методов доступа к свойствам
- поля поддержки
- условно игнорировать свойства
- Поддержка словарей, отличных от строковых ключей,
- Разрешить пользовательским преобразователям обрабатывать значения NULL
- Копировать параметры сериализации Json
- Создание JsonSerializerOptions с веб-параметрами по умолчанию
См. также
- Путешествие к единой платформе .NET
- Улучшения производительности в .NET 5
- Скачайте пакет SDK для .NET