10 ноября Microsoft представила новый выпуск платформы .NET 5 с поддержкой Linux, macOS и WebAssembly. Это следующий крупный выпуск .NET Core после 3.1.
Релиз включает среду выполнения .NET и ASP.NET Core 2. для размещения автономных приложений на серверах Windows, а также модуль ASP.NET Core для IIS, который может быть установлен отдельно на серверах без установки .NET Runtime.
.NET SDK содержит обновленную среду выполнения .NET. При установке SDK загрузка пакетов среды выполнения или ASP.NET Core не требуется.
Улучшения
Некоторые изменения мы уже описывали во время выпуска релиз-кандидата .NET 5.0 (RC2). Это была почти финальная версия, поэтому многие улучшения были перенесены в .NET 5.0:
- .NET 5.0 уже прошел испытания в бою и в течение нескольких месяцев размещался на dot.net и Bing.com.
- Производительность многих компонентов значительно улучшена.
- C# 9 и F# 5 предлагают новые улучшения языка, такие как программы верхнего уровня и записи для C# 9. А F# 5 позволяет использовать интерактивное программирование и повышение производительности для функционального программирования на .NET.
- Библиотеки .NET имеют повышенную производительность для сериализации Json, регулярных выражений и HTTP. Они также полностью аннотированы на предмет обнуления.
- Задержка P95 снизилась из-за усовершенствований в GC и многоуровневой компиляции.
- Платформа расширена на ОС Windows Arm64 и WebAssembly.
.NET не замена
ASP.NET Core 5.0 основан на .NET 5.0, но сохраняет название «Core», чтобы не путать его с ASP.NET MVC 5. Точно так же Entity Framework Core 5.0 сохраняет название «Core», чтобы отличаться от Entity Framework 5 и 6.
.NET 5.0 не заменяет .NET Standard. При разработке новых приложений можно указать название net5.0 для всех типов проектов, включая библиотеки классов. Для приложений и библиотек .NET 5.0 Moniker net5.0 объединяет и заменяет netcoreapp и netstandardTFM. Однако если вы планируете совместно использовать код между рабочими нагрузками .NET Framework, .NET Core и .NET 5, вы можете сделать это, указав netstandard2.0.
.NET 5.0 не заменяет .NET Framework, но является основной реализацией .NET в будущем, и .NET Framework 4.x все еще поддерживается.
Перенос следующих технологий из .NET Framework в .NET 5.0 не планируется, но в .NET 5.0 есть альтернативы: ASP.NET Core Blazor или Razor Pages для веб-форм, gRPC и Открытый исходный код CoreWF.
Поддержка
.NET 5.0 имеет схожую матрицу поддержки платформ с .NET Core 3.1 для Windows, macOS и Linux. С .NET Core 3.1 в операционной системе есть возможность перейти на .NET 5.0 в той же версии ОС. Наиболее важным дополнением к .NET 5.0 является Windows Arm64.
.NET 5.0 – это актуальная версия. Создатели планируют поддерживать .NET 5.0 до середины февраля 2022 года. Следующий выпуск .NET 6.0 станет LTS-версией и будет поддерживаться в течение трех лет, как и .NET Core 3.1.
Языки
C# 9 и F# 5 являются частью выпуска .NET 5.0 и включены в .NET 5.0 SDK вместе с Visual Basic. Он содержит улучшения для поддержки Visual Basic Application Framework в .NET Core.
Генераторы исходного кода C# – важная новая функция компилятора C#. Технически они не являются частью C# 9, поскольку не имеют синтаксиса языка. Новые образцы генератора исходного кода C# помогут начать работу с этой функцией.
Чтобы использовать новый синтаксис C# 9 и целевой .NET 5.0., разработчики обновили репозиторий dotnet/iot. Изменения привели к удалению более 2 тысяч строк кода. Новый синтаксис использует программы верхнего уровня, записи, шаблоны и выражения переключения. Также теперь можно воспользоваться полным набором аннотаций, допускающих значение NULL, в библиотеках .NET.
C#
Разработчики, пишущие приложения .NET 5, будут иметь доступ к последней версии и функциям C#. .NET 5 работает в паре с C# 9, что привносит в язык много новых функций. Вот несколько основных моментов:
- Записи: неизменяемые ссылочные типы, которые ведут себя как типы значений и вводят в язык новое ключевое слово «with».
- Реляционная модель соответствия расширяет возможности сопоставления шаблонов для реляционных операторов, сравнительных оценок и выражений, в том числе логических моделей. Новые ключевые слова «and, or и not».
- Операторы верхнего уровня: в качестве средства для ускорения принятия и изучения C#. Метод Main можно опустить, и допустимо простое приложение: System.Console.Write("Hello world!");
- Указатели на функции: языковые конструкции, которые предоставляют следующие коды операций промежуточного языка (IL) – «ldftn и calli».
В дополнение к некоторым из отмеченных новых функций C# генераторы исходного кода находят свое применение в проектах разработчиков. Генераторы исходного кода позволяют проверять программу во время компиляции и создавать дополнительные файлы, которые компилируются вместе с остальной частью кода.
F#
F# – это язык функционального программирования .NET, а с .NET 5 разработчики получают доступ к F# 5. Интерполирование строк в C# и даже JavaScript, F# поддерживает базовую интерполяцию строк:
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Помимо базовой строковой интерполяции существует типизированная интерполяция. При типизированной интерполяции данный тип должен соответствовать спецификатору формата.
Это похоже на sprint функцию, которая форматирует строку на основе типобезопасных входных данных.
.NET MAUI
.NET MAUI – это эволюция набирающего популярность инструментария Xamarin.Forms с открытым исходным кодом на GitHub.
.NET MAUI упрощает выбор для разработчиков .NET, предоставляя единый стек, который поддерживает все современные рабочие нагрузки: Android, iOS, macOS и Windows. С .NET MAUI можно создать единый проект для разработчиков, ориентированный на несколько платформ и устройств.