Что нового в .NET 5.0

dotnet 5

10 ноября 2020 вышел в долгожданный релиз фреймворка .NET 5, который является развитием .NET Core в долгой эволюции фреймворка .NET.

.NET 5.0 — это первый релиз на пути к унификации платформы .NET, позволяющей более плавно мигрировать с .NET Framework.

Что мы получили с выходом .NET 5? В первую очередь это объединение различных фреймворков построенных на .NET — теперь нет Core, Mono, Xamarin – а есть единый .net5 target. Фактически, .net5 target пришел на замену netcoreapp и netstandard. Дополнительно можно выбрать платформу операционной системы, например: net5.0-android, net5.0-ios, или net5.0-windows (ссылка). Фреймворк стал действительно кроссплатформенным. В нем есть базовый набор классов и зависимые от конкретной операционной системы дополнения. В частности, для Windows есть поддержка привычного WinForms, который был выпущен и проверен ранее в .NET Core 3.1.

.NET унифицированная платформа для различных устройств
.net unified platform

В .NET 5 проведена большая работа по оптимизации как непосредственно производительности приложений, так и скорости компиляции исходного кода. Теперь тесты и ночные сборки в CI выполняются немного быстрее.

Что касается производительности кода, то в тестах по количеству gRPC запросов в секунду приложение .NET 5 занял второе место после Rust и опередил программный код, скомпилированный Go (диаграмма из блога).

dotnet gRPC

Следующим по значимости новшеством .NET 5, безусловно, стало включение новой версии языка C# 9. Наиболее интересным нововведением является появление записей (records). Новый синтаксис сильно упрощает описание неизменяемых моделей данных по сравнению с традиционными классами. В результате получился простой синтаксис декларации и инициализации.

public record Animal
{
public string? Name { get; init; }
public string? Areal { get; init; }
}
var brownBear = new Animal { Name = "Bear", Areal = "Siberia" };
var whiteBear = animal with { Areal = "Arctic" };

В новшествах языка также можно отметить возможность написания кода программы без использования функции main().

using System.Console;
WriteLine("Hello World!");

В состав .NET 5 был включен инсталлятор ClickOnce. Теперь есть возможность публикации приложения в виде установочного пакета, который впоследствии можно запустить на нужном компьютере и развернуть там приложение. В состав установочного пакета может быть включен весь фреймворк целиком. Это увеличит объем дистрибутива, но упростит установку на неподготовленный компьютер.

Получил развитие вариант распространения приложения — Single File Application, который появился в .NET Core 3.1. Можно создать единый исполняемый файл, содержащий в себе все библиотеки с возможностью внедрения, в том числе всех используемых библиотек фреймворка. Теперь файлы стали меньше, и они быстрее запускаются.

Новая экосистема .NET будет иметь статус LTS (Long Time Support) только для четных версий. Так, например, .NET 5 не будет иметь статуса долговременной поддержки, а .NET 6 будет. Иными словами, следующие выпуски будут: .NET 6 LTS, .NET 7, .NET 8 LTS и т.д.

Некоторые ключевые моменты в .NET 5:

  • Улучшение поддержки и разработки настольных-приложений (Windows Forms, WPF)
  • Новые возможности C# 9.0 и F# 5.0, например, программы верхнего уровня, улучшенные выражения switch и т.д.
  • Поддержка архитектуры ARM64
  • Улучшение производительности по сравнению с предыдущими версиями

Вместе с .NET 5 вышли в релиз ASP.NET Core 5.0 и Entity Framework Core 5.0.
Основные новшества и улучшения в ASP.NET Core 5.0:

  • Улучшения в привязке модели в MVC, добавлена поддержка для типов records в C# 9
  • Улучшение поддержки Blazor Server и Blazor WebAssembly
  • Встроенная поддержка для OpenAPI и Swagger UI для Web API
  • Фильтры хабов SignalR и параллельное обращение к хабам
  • Авто обновление браузера с помощью команды dotnet watch
  • Улучшения производительности HTTP/2 и gRPC (если верить Microsoft gRPC на ASP.NET производительнее, чем в проектах на Go, С++ или Java)

И некоторые ключевые обновления в EF Core 5.0:

  • Добавлена поддержка автоматической связи Many-to-many
  • Добавлена возможность наследования table-per-type
  • Упрощенное логгирование

Для использования .NET 5.0, а также ASP.NET Core 5 и EF Core 5.0 необходимо установить Visual Studio 16.8 или выше на Windows или последнюю версию Visual Studio for Mac для macOS. Также можно использовать Visual Studio Code, в которой расширение для языка C# уже поддерживает .NET 5.0 and C# 9.

Боле подробную информацию про релиз .NET 5 можно найти на официальном сайте Microsoft на страницеAnnouncing .NET 5.0

Ресурсы

Ссылки

Вам также может понравиться

About the Author: Anton

Programistik