Добавочное ASP.NET для обновления ядра ASP.NET

Обновление приложения из ASP платформа .NET Framework до ASP.NET Core не является тривиальным для большинства рабочих приложений. Эти приложения часто включают новые технологии по мере их доступности и часто состоят из многих устаревших решений. В этой статье приводятся рекомендации и ссылки на средства обновления приложений ASP платформа .NET Framework на ASP.NET Core с минимальными изменениями.

Одной из более крупных проблем является широкое использование HttpContext всей базы кода. Без добавочного подхода и инструментов для удаления HttpContext зависимости требуется крупномасштабная перезапись. Адаптеры в dotnet/systemweb-adapters предоставляют набор вспомогательных средств выполнения для доступа к типам, используемым в приложении ASP платформа .NET Framework таким образом, что работает в ASP.NET Core с минимальными изменениями.

Полная миграция может занять значительные усилия в зависимости от размера приложения, зависимостей и не переносимых API. Чтобы продолжить развертывание приложения в рабочей среде при работе с обновлением, лучше всего следовать шаблону Strangler Fig. Шаблон Strangler Fig позволяет постоянно разрабатывать старые системы с добавочным подходом к замене определенных компонентов функциональности новыми службами. В этом документе описывается применение шаблона Strangler Fig к ASP.NET приложению, обновляемого на ASP.NET Core.

Если вы хотите пропустить эту обзорную статью и приступить к работе, см. статью "Начало работы".

Миграция приложений в ASP.NET Core

Перед началом миграции приложение предназначено для ASP платформа .NET Framework и запускается в Windows со своими вспомогательными библиотеками:

Before starting the migration

Миграция начинается с внедрения нового приложения на основе ASP.NET Core, которое становится точкой входа. Входящие запросы отправляются в приложение ASP.NET Core, которое обрабатывает запрос или прокси-сервер запрос к приложению платформа .NET Framework через YARP. Во-первых, большинство кода, предоставляющих ответы, находится в приложении платформа .NET Framework, но теперь приложение ASP.NET Core настроено для запуска миграции маршрутов:

start updating routes

Чтобы перенести бизнес-логику, основанную на HttpContextней, необходимо создать библиотеки.Microsoft.AspNetCore.SystemWebAdapters Создание библиотек с SystemWebAdapters помощью разрешенных:

  • Библиотеки, созданные для платформа .NET Framework, .NET Core или .NET Standard 2.0.
  • Гарантирует, что библиотеки используют API, доступные как в ASP платформа .NET Framework, так и в ASP.NET Core.

Microsoft.AspNetCore.SystemWebAdapters

После настройки приложения ASP.NET Core с помощью YARP можно начать обновление маршрутов с ASP платформа .NET Framework до ASP.NET Core. Например, методы действий контроллера WebAPI или MVC, обработчики или другая реализация маршрута. Если маршрут доступен в приложении ASP.NET Core, он соответствует и обслуживается.

Во время процесса миграции определяются дополнительные службы и инфраструктура, которые необходимо обновить для запуска в .NET Core. Ниже перечислены параметры, перечисленные в порядке обслуживания:

  1. Перемещение кода в общие библиотеки
  2. Связывание кода в новом проекте
  3. Дублирование кода

В конечном итоге приложение ASP.NET Core обрабатывает больше маршрутов, чем приложение платформа .NET Framework:

the ASP.NET Core app handles more of the routes

После того как приложение ASP платформа .NET Framework больше не требуется и удаляется:

  • Приложение работает в стеке приложений ASP.NET Core, но по-прежнему использует адаптеры.
  • Оставшаяся работа по миграции удаляет использование адаптеров.

final pic

Помощник по обновлению .NET расширения Visual Studio может помочь обновить веб-приложения ASP платформа .NET Framework до ASP.NET Core. Дополнительные сведения см. в записи блога об обновлении проектов .NET с помощью Visual Studio.

System.Web Adapters

Пространство Microsoft.AspNetCore.SystemWebAdapters имен — это коллекция вспомогательных средств среды выполнения, которые упрощают использование кода, написанного System.Web при переходе на ASP.NET Core. Существует несколько пакетов, которые могут использоваться для использования функций из этих адаптеров:

  • Microsoft.AspNetCore.SystemWebAdapters: этот пакет используется в вспомогательных библиотеках и предоставляет ИНТЕРФЕЙСы API System.Web, от которых могут зависеть такие, как HttpContext и другие. Этот пакет предназначен для .NET Standard 2.0, .NET 4.5+ и .NET 6+.
  • Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices: этот пакет предназначен только для платформа .NET Framework и предназначен для предоставления служб ASP платформа .NET Framework приложениям, которые могут потребоваться для добавочной миграции. Обычно это не предполагается ссылаться из библиотек, а не из самих приложений.
  • Microsoft.AspNetCore.SystemWebAdapters.CoreServices: этот пакет предназначен только для .NET 6+ и предназначен для предоставления служб для ASP.NET Core приложений для настройки поведения System.Web API, а также выбор любого поведения для добавочной миграции. Обычно это не предполагается ссылаться из библиотек, а не из самих приложений.
  • Microsoft.AspNetCore.SystemWebAdapters.Abstractions: этот пакет является вспомогательным пакетом, предоставляющим абстракции для служб, используемых как ASP.NET Core, так и ASP платформа .NET Framework приложения, например сериализации состояния сеанса.

Примеры сценариев, в которых это полезно, см . в статье адаптеров.

Рекомендации по использованию см. в статье по использованию.

Дополнительные ресурсы