Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обновление приложения из ASP.NET Framework до ASP.NET Core не является тривиальным для большинства рабочих приложений. Эти приложения часто включают новые технологии по мере их доступности и часто состоят из многих устаревших решений. В этом руководстве представлены практические подходы и средства для обновления приложений ASP.NET Framework до ASP.NET Core с минимальными изменениями.
Почему миграция сложна
Миграция с ASP.NET Framework на ASP.NET Core включает несколько сложных задач, которые делают полную перезапись сложной и рискованной для большинства рабочих приложений:
Техническое накопление задолженности
Производственные приложения часто накапливают технический долг за годы разработки:
- Зависимости System.Web — повсеместное использование HttpContext и связанных типов в кодовой базе.
- Устаревшие зависимости пакетов , которые могут не иметь эквивалентов .NET Core
- Устаревшие средства сборки и конфигурации проекта, несовместимые с современной .NET
- Нерекомендуемое использование API , которое необходимо заменить современными альтернативами
- Предупреждения компилятора и проблемы с качеством кода , которые усложняют миграцию
Перекрестные проблемы
Многие приложения имеют перекрестные проблемы, охватывающие несколько уровней и нуждающиеся в тщательной координации во время миграции:
- Управление состоянием сеанса — ASP.NET Framework и ASP.NET Core имеют принципиально разные API сеанса и поведение
- Проверка подлинности и авторизация — различные модели проверки подлинности и API между платформами
- Ведение журнала и мониторинг . Необходимо поддерживать согласованное ведение журнала в обоих приложениях во время миграции.
- Стратегии кэширования - Кэширование в памяти, распределенное или выходное необходимо поддерживать согласованность.
- Обработка ошибок — создание согласованных шаблонов обработки ошибок в обоих приложениях
- Управление конфигурацией— управление параметрами, которыми необходимо предоставить общий доступ или синхронизацию между приложениями
- Внедрение зависимостей — Перенос из различных контейнеров DI в встроенный контейнер ASP.NET Core
Цепочки зависимостей библиотеки
Вспомогательные библиотеки часто имеют сложные связи зависимостей, требующие тщательного порядка обновления:
- Сложность дерева зависимостей . Библиотеки должны быть обновлены в порядке глубины размещения поиска в первую очередь
- Требования к многоцелевой настройке . Библиотеки должны поддерживать как .NET Framework, так и .NET Core/.NET Standard
- Совместимость 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