4 декабря вышел ASP.NET Core 2.2, он входит в поставку .NET Core 2.2. Про .NET Core 2.2 я писал совсем недавно и теперь нужно раскрыть тему в глубину. Давайте посмотрим, чего новенького нам приготовили.



Где взять


.NET Core SDK (2.2.100) можно скачать из обычного места и использовать как на своей машине для разработки, так и на серверах. Новый хостинг Windows Server, инсталляторы рантайма и бинарные архивы для обновления серверов доступны там же.


Это релиз посвящён обновлению .NET Core, ASP.NET Core и Entity Framework Core до версии 2.2.0. Новая версия SDK — 2.2.100. Имеются следующие требования к версии Visual Studio:


  • Visual Studio version 2017 15.9 и выше
  • Visual Studio for Mac version 7.7 и выше
  • Visual Studio Code C# extension version 1.17.1 и выше

Visual Studio 2019 16.0 Preview 1, которая тоже была выложена 4 декабря, позволяет опционально подключать .NET Core SDK 2.2.100.


Что нового


Основная идея этого релиза ASP.NET Core в том, чтобы улучшить производительность разработчика и функциональность платформы с особым упором на Web/HTTP API. Как всегда, мы позаботились и о перформансе. Мы уже писали об этих фичах в рамках предыдущих релизов, и соответственно вы можете прочитать подробное описание по ссылкам:



Примечание переводчика: все ссылки ведут на оригинальные источники на английском языке. Если вам хочется увидеть что-то из этого переведенным для Хабра — пишите в комментариях!


Интеграция health check с помощью BeatPulse


Проект BeatPulse теперь поддерживает новые Health Checks API. По сути, теперь можно быстро и просто добавлять проверки, совместимые со множеством популярных систем и зависимостей, их поддержка в BeatPulse сделана великолепно. Вот что пишут в самом BeatPulse о новых Health Checks API:


«BeatPulse — это проект, разрабатываемый сообществом, и призванный предоставить механизмы проверки работоспособности для приложений, сети и широкого спектра всевозможных сервисов, часто встречающихся в энтерпрайзе, например, SQL Server, MySQL, PostgreSQL, Redis, Kafka, и многих других. Когда Microsoft анонсировала ASP.NET Core Health Checks в роадмапе релиза 2.2, команда BeatPulse портировала все существующие пакеты и фичи, относящиеся к подобным проверкам, на абстракции Microsoft Health Checks из репозитория AspNetCore.Diagnostics.HealthChecks. Кроме того, команда BeatPulse добавила другие фичи, вроде проверки пульса (Application Insights и Prometheus), сообщений о падениях и UI, в котором можно настраивать параметры мониторинга и смотреть глобальный экран со статусом работоспособности систем. Этот UI распространяется как Docker image, опубликованный на Docker Hub».


Что дальше


После анонса планов на ASP.NET Core 2.2, было опубликовано несколько фичей, которых нет в списке выше, включая API для авторизации через IdentityServer4, кодогенерацию клиента для Open API (Swagger) и утилиту командной строки для HTTP REPL. Эти фичи всё ещё разрабатываются и не готовы к релизу. Тем не менее, мы надеемся доделать и опубликовать их в виде аддонов в ближайшие месяцы. Потерпите немного, пока мы доведем их до состояния готовности, и заранее спасибо.


Как мигрировать на ASP.NET Core 2.2


Для миграции проекта ASP.NET Core с 2.1 на 2.2, откройте файл csproj соответствующего проекта, и поменяйте значение TargetFramework на netcoreapp2.2. Если вы таргетируетесь на .NET Framework 4.x, делать этого не стоит.


В конце концов вам нужно будет обновить ссылки на пакеты NuGet, чтобы они соответствовали самым последним стабильным версиям. Важно, что проекты, таргетирующиеся на .NET Core (в отличие от .NET Framework) не должны указывать версию пакета Microsoft.AspNetCore.App, поскольку эта связь управляется самим SDK автоматически. Если вы всё-таки сделаете это, то получите warning при сборке.


Более подробная информация про апгрейд на ASP.NET Core 2.2 имеется по ссылке.


Жизненный цикл поддержки


ASP.NET Core 2.2 — самый свежий релиз в релиз-трейне «Current». Это первый релиз после выпуска 2.1 LTS, который анонсирует наличие разницы между трейнами LTS и Current. Трейн Current — это то место, где применяются самые новые фичи, улучшения и регулярные багфиксы, именно он рекомендуется для большинства пользователей. Заметьте, что и LTS, и Current получают сервисные обновления безопасности и критические обновления, касающиеся стабильности. Сейчас можно считать, что 2.2 будет последним не-сервисным обновлением в жизненном цикле линейки 2.x, и тем клиентам, которые не хотят использовать LTS, нужно будет мигрировать на 3.0 GA в течение 3 месяцев после её релиза во второй половине 2019 года, иначе они рискуют остаться без поддержки.


Более подробная информация про политики поддержки .NET Core имеется по ссылке.


Доступность через Azure App Service


Сейчас .NET Core 2.2 SDK, .NET-рантайм и обновленный модуль IIS для ASP.NET Core находятся в процессе разворачивания на Azure App Service по всему миру. Мы хотим завершить этот процесс до конца декабря 2018 года.


Некоторые регионы могут получить обновленный рантайм раньше обновления модуля IIS (ANCM), который по умолчанию необходим для проектов, таргетирующихся на ASP.NET Core 2.2. Кроме того, он является базовым требованием для нового внутрипроцессного хостинга. Если вы видите ошибки запуска после развертывания на Azure App Service, попробуйте настроить свой проект так, чтобы он использовал существующую версию ANCM, это делается с помощью установки свойству AspNetCoreModule значения "AspNetCoreModule", например:


<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

Как только целевой регион обновится до последней версии ANCM, можно будет везде поудалять эти свойства и переразвернуть приложения — в результате, у вас будет задействована свежая версия ANCM.


Этот релиз, кроме всего прочего, добавляет поддержку 64-битной архитектуры на Azure App Service для .NET Core. Если вы запустите своё ASP.NET Core приложение на .NET Core 2.2 со включенным внутрипроцессным хостингом, то сможете просто включить опцию «64-бита» в Azure Portal, и весь сайт начнёт выполняться в 64-битном процессе. Дополнительная информация о работе приложений ASP.NET Core в 64-битном процессе на Azure App Service с другими конфигурациями описана в отдельной статье.


Обратная связь


Как всегда, пожалуйста, не постесняйтесь оставить обратную связь в виде ишшуй на https://github.com/aspnet/AspNetCore. Это важно!


Примечание переводчика: и в комментариях на Хабре тоже неплохо бы что-нибудь написать. Это важно!


Не забывайте, что билеты на DotNext с первого января подорожают. Personal — на тысячу, а Standard — на две тысячи. Подробности про Early Bird — на сайте.

Комментарии (3)


  1. dmitry_dvm
    15.12.2018 00:31

    Чтобы включить inprocess выполнение надо прописать и в csproj, и в web.config почему-то. Почему так?


    1. olegchir Автор
      15.12.2018 02:55

      Эмм… потому что выделяемый процесс — это воркер IIS конкретно под этот деплоймент, и где ему ещё настраиваться, кроме web.config? Без инпроцесса есть отдельно процесс w3wp и отдельно dotnet.exe, и ANCM работает как реверс-прокси для редиректа между ними. С инпроцессом всё это влито в один процесс w3wp. Но это детали реализации, а общая архитектура всё равно подразумевает понятие деплоймента, и значит настраивать надо там. Я угадал? :)


    1. fedorro
      15.12.2018 13:24
      +1

      csproj активирует поддержку inprocess в приложении, а web.config включает её в IIS.