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 5 проведена большая работа по оптимизации как непосредственно производительности приложений, так и скорости компиляции исходного кода. Теперь тесты и ночные сборки в CI выполняются немного быстрее.
Что касается производительности кода, то в тестах по количеству gRPC запросов в секунду приложение .NET 5 занял второе место после Rust и опередил программный код, скомпилированный Go (диаграмма из блога).
Следующим по значимости новшеством .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
Ресурсы
- Загрузить .NET с сайта Microsoft можно по ссылке Download .NET 5.0.
- Проект .NET Core на GitHub — dotnet/core.
- Docker-образы для .NET
- Docker-образы .NET SDK
- Docker-образы .NET Runtime
- Docker-образы .NET Runtime Dependencies
- Docker-образы .NET Samples
Ссылки
- Вышли в релиз .NET 5, ASP.NET Core 5 и EF Core 5.0 — METANIT.COM
- Что нового в .NET 5? — ВКонтакте
- Вышел .NET 5. И что? — Хабр
- Announcing .NET 5.0 — .NET Blog Microsoft
- Performance Improvements in .NET 5 — .NET Blog Microsoft
- gRPC performance improvements in .NET 5 — ASP.NET Blog Microsoft
- .NET 5.0 Examples — richlander/examples.md GitHub