Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обновление приложения из ASP.NET Framework до ASP.NET Core не является тривиальным для большинства рабочих приложений. Эти приложения часто включают новые технологии по мере их доступности и часто состоят из многих устаревших решений. В этом руководстве представлены практические подходы и средства для обновления приложений ASP.NET Framework до ASP.NET Core с минимальными изменениями.
Почему миграция сложна
Миграция с ASP.NET Framework на ASP.NET Core включает несколько сложных задач, которые делают полную перезапись сложной и рискованной для большинства рабочих приложений:
Техническое накопление задолженности
Производственные приложения часто накапливают технический долг за годы разработки:
- Зависимости System.Web — повсеместное использование HttpContext и связанных типов в кодовой базе.
- Устаревшие зависимости пакетов , которые могут не иметь современных совместимых эквивалентов
- Устаревшие средства сборки и конфигурации проекта, несовместимые с современной .NET
- Нерекомендуемое использование API , которое необходимо заменить современными альтернативами
- Предупреждения компилятора и проблемы с качеством кода , которые усложняют миграцию
Перекрестные проблемы
Многие приложения имеют перекрестные проблемы, охватывающие несколько уровней и нуждающиеся в тщательной координации во время миграции:
- Управление состоянием сеанса — ASP.NET Framework и ASP.NET Core имеют принципиально разные API сеанса и поведение
- Проверка подлинности и авторизация — различные модели проверки подлинности и API между платформами
- Ведение журнала и мониторинг . Необходимо поддерживать согласованное ведение журнала в обоих приложениях во время миграции.
- Стратегии кэширования - Кэширование в памяти, распределенное или выходное необходимо поддерживать согласованность.
- Обработка ошибок — создание согласованных шаблонов обработки ошибок в обоих приложениях
- Управление конфигурацией— управление параметрами, которыми необходимо предоставить общий доступ или синхронизацию между приложениями
- Внедрение зависимостей — Перенос из различных контейнеров DI в встроенный контейнер ASP.NET Core
Универсальный шаблон узла может помочь решить несколько из этих проблем, внедряя современную инфраструктуру .NET в приложения ASP.NET Framework. Дополнительные сведения см. в статье .NET Generic Host in ASP.NET Framework.
Цепочки зависимостей библиотеки
Вспомогательные библиотеки часто имеют сложные связи зависимостей, требующие тщательного порядка обновления:
- Сложность дерева зависимостей . Библиотеки должны быть обновлены в порядке глубины размещения поиска в первую очередь
- Требования для нескольких целевых приложений . Библиотеки должны поддерживать все версии платформы, предназначенные для приложения.
- Совместимость API . Обеспечение работы библиотек с обеими версиями платформ в течение периода миграции
- Сложность тестирования . Для каждого обновления библиотеки требуется тщательное тестирование, чтобы обеспечить совместимость
Различия архитектуры приложений
Основные различия между платформой ASP.NET Framework и ASP.NET Core создают дополнительные проблемы:
- Модели размещения — различные подходы к размещению приложений и управлению жизненным циклом
- Конвейер ПО промежуточного слоя — переход из модулей и обработчиков HTTP в ПО промежуточного слоя
- Обработка запросов — различные модели обработки запросов и контексты
- Характеристики производительности — различные шаблоны использования памяти и профили производительности
Эти проблемы делают добавочную миграцию предпочтительным подходом для большинства рабочих приложений, так как позволяет командам постепенно устранять эти проблемы при сохранении рабочего приложения в рабочей среде.
Документацию по важным областям, которые изменились, см. в связанных темах, доступных в разделе Сложные сценарии миграции - Детальное рассмотрение.
Начните с этого: выберите путь миграции
Приложение ASP.NET Framework может успешно перейти к ASP.NET Core. Ключ заключается в выборе правильного подхода для вашей конкретной ситуации.
Краткое руководство по принятию решений
Ответьте на эти вопросы, чтобы выбрать подход:
Какова ваша временная шкала и отказоустойчивость к рискам?
- Необходимо поддерживать производительность во время миграции → поэтапной миграции
- Может полностью изменить подход → локальная миграция
Насколько большой размер вашего приложения?
- Миграция небольших и средних приложений → внутренний перенос
- Крупные рабочие приложения → добавочная миграция безопасна
У вас есть сложные зависимости?
- Неизвестные или устаревшие зависимости → пошаговая миграция
- Интенсивное использование System.Web → инкрементной миграции
- Минимальные зависимости → Миграция на месте
Добавочная миграция
Добавочная миграция — это реализация шаблона Strangler Fig и лучше всего подходит для более крупных проектов или проектов, которые должны продолжать оставаться в рабочей среде во время миграции. См. статью «Начало работы с постепенной миграцией с ASP.NET на ASP.NET Core», чтобы приступить к постепенной миграции приложения.
Миграция на месте
Встроенная миграция может работать для достаточно небольших приложений. Если это возможно, это позволяет быстро заменить приложение. Однако небольшие проблемы могут усилиться, если вы решите выполнить миграцию на месте. См. статью "Узнайте, как обновиться с ASP.NET MVC, Web API и Web Forms до ASP.NET Core" для получения информации о параметрах средств миграции.
ASP.NET Core