Andrey on .NET | Доступна .NET 6 Preview 5

Доступна .NET 6 Preview 5

.NET logoНа этой неделе стала доступна очередная, пятая, предварительная версия .NET 6. Давайте коротко рассмотрим основные изменения в .NET, ASP.NET и Entity Framework Core. При этом полные описания доступны по ссылкам, которые будут приведены в конце данного обзора.

Где скачать?

Для работы с .NET 6 Preview 5 рекомендуется использовать Visual Studio 2019 версии 17.0 (предварительная версия) и Visual Studio for Mac версии 8.9. Недавно вышедшая Visual Studio 2022 Preview 1 уже содержит соответствующий SDK.

.NET 6 Preview 5

Улучшение Дополнительных Загрузок (Optional Workloads)

Дополнительные загрузки добавляют поддержку разработки приложений различных типов (например WebAssembly, мобильные и т. д.) без увеличения размера основного SDK. В Preview 5 доступны 2 команды, которые позволяют понять как эта возможность будет работать в финальной версии:

  • dotnet workload list – выводит список установленных дополнительных загрузок.
  • dotnet workload update – обновляет установленные дополнительные загрузки до последней версии.

Важно отметить, что обе команды будут выполняться в рамках определенного (заданного) SDK. Этого сделано для того, чтобы на одном компютере могли быть установлены и настроены как .NET 6, так и последующие его версии.

Проверка NuGet пакетов

.NET 6 позволит тестировать NuGet пакеты по следующим параметрам:

  • Пакет не содержит критических изменений (breaking changes).
  • Пакет предоставляет одинаковый API для всех runtime.
  • В пакете отсутствуют различные framework или runtime специфичные проблемы

К сожалению на данный момент подробных инструкций по валидации NuGet пакетов нет. Их обещают опубликовать в ближайшее время.

Новые анализаторы Roslyn

Список новых анализаторов, доступных в .NET 6 Preview 5, можно посмотреть на GitHub.

Библиотеки

  • HttpClientHandler получил поддержку Socks прокси.
  • Добавлена поддержка криптографического алгоритма ChaCha20/Poly1305. При этом требуется поддержка со стороны операционной системы.
  • Microsoft.Extensions
    • Hosting: Упрощены настройки времени остановки (shutdown timeout) приложения
    • Dependecy Injection: Работа с сервисами, реализующими IAsyncDisposable, больше не вызывает InvalidOperationException.
  • System.Text.Json: JsonSerializer может использовать генератор исходного кода (source generator) вместо System.Reflection. В результате – ускорение работы и уменьшение объема используемой памяти.
  • OpenTelemetry: Добавлена поддержка Metrics API (System.Diagnostics.Metrics).

ASP.NET 6 Preview 5

Hot Reload с dotnet watch

Теперь обновления приложения на лету (Hot Reload) включены по умолчанию в dotnet watch и не требуют отдельной настройки. А вот чтобы отключить такое поведение необходимо указать ключ "--no-hot-reload".

Обновлены SPA шаблоны

SPA шаблоны теперь используют React 17 и Angular 11.

Улучшенная работа с HTTP заголовками

Все доступные HTTP заголовки добавлены как свойства IHeaderDictionary. Это не только сделало работу с ними удобнее но и ускорило её, потому что теперь поиск по словарю заменен прямым обращением к свойству.

Подкатегории логов Kestrel

Единая категория Microsoft.AspNetCore.Server.Kestrel теперь разделена на несколько:

  • Microsoft.AspNetCore.Server.Kestrel: ApplicationError, ConnectionHeadResponseBodyWrite, ApplicationNeverCompleted, RequestBodyStart, RequestBodyDone, RequestBodyNotEntirelyRead, RequestBodyDrainTimedOut, ResponseMinimumDataRateNotSatisfied, InvalidResponseHeaderRemoved, HeartbeatSlow.
  • Microsoft.AspNetCore.Server.Kestrel.BadRequests: ConnectionBadRequest, RequestProcessingError, RequestBodyMinimumDataRateNotSatisfied.
  • Microsoft.AspNetCore.Server.Kestrel.Connections: ConnectionAccepted, ConnectionStart, ConnectionStop, ConnectionPause, ConnectionResume, ConnectionKeepAlive, ConnectionRejected, ConnectionDisconnect, NotAllConnectionsClosedGracefully, NotAllConnectionsAborted, ApplicationAbortedConnection.
  • Microsoft.AspNetCore.Server.Kestrel.Http2: Http2ConnectionError, Http2ConnectionClosing, Http2ConnectionClosed, Http2StreamError, Http2StreamResetAbort, HPackDecodingError, HPackEncodingError, Http2FrameReceived, Http2FrameSending, Http2MaxConcurrentStreamsReached.
  • Microsoft.AspNetCore.Server.Kestrel.Http3: Http3ConnectionError, Http3ConnectionClosing, Http3ConnectionClosed, Http3StreamAbort, Http3FrameReceived, Http3FrameSending.

Соответственно, можно включать журналирование только необходимых категорий, что уменьшает нагрузку на данный процесс.

Entity Framework Core 6.0 Preview 5

Новинкой Entity Framework Core 6.0 Preview 5 являются скомпилированные модели (которые включают в себя описание всех сущностей EF и их связей). В предыдущих версиях они генерировались во время выполнения приложения. Теперь их можно создать заранее как часть проекта, используя EF Core CLI или NuGet Package manager console. Это позволяет ускорить запуск первого запроса до 10 раз. Причём чем больше модель (содержит больше сущностей и связей), тем более выражен этот эффект.

Из ограничений – необходимость пересоздавать скомпилированные модели при изменении сущностей или их конфигурации. Также не поддерживаются глобальные фильтры, отложенная загрузка, прокси для отслеживания изменений.

Ссылки

Полные описания нововведений доступны по следующим ссылкам:

Кроме того, следующую дополнительную информацию можно найти на GitHub:

Добавить комментарий