Зачем обновлять?
В версии 12 реализовано множество улучшений, но самое главное — вся платформа перенесена с .Net Framework 4 на .NET 6.
Обновление также содержит значительные улучшения безопасности, производительности и автономного управления, в то время как API-интерфейсы платформы Optimizely остаются прежними, поэтому существующий код не будет ломаться, и не требуется миграции БД, за исключением пользовательских таблиц, которые необходимо перенести из схемы идентификации AspNet в OpenId.
Поскольку теперь он является родным для .Net Core, это также означает, что он не зависит от ОС и может размещаться на платформах, отличных от Windows, например, на Linux.
Как обновить?
Предлагаемый способ — использовать Optimizely Upgrade Assistant, который создаст резервную копию текущего решения и обновит проект до желаемой версии .NET Core. Помощник также попытается перенести серверный код и представления, но к этому следует относиться с осторожностью. Разработчику необходимо вручную выполнить миграцию с web.config на стиль настроек appsettings.json, миграцию с global.asax на start.cs, миграцию с аутентификации OWIN и ASP.NET на аутентификацию OpenID, миграцию контроллеров блоков в компоненты, внедрение зависимостей, ведение журнала, Сериализация JSON и т. д.
Веб-формы больше не поддерживаются, а это означает, что MVC является предпочтительным способом отображения контента.
Обновление с .Net Framework 4 до .NET 6 означает, что некоторые из используемых пакетов NuGet больше не совместимы и их необходимо либо обновить до версий .Net Core (и надеяться, что у них есть совместимые API), либо заменить их другими пакетами или даже переписать. некоторые функциональные возможности. Это невозможно предсказать, поскольку каждое решение индивидуально и должно быть тщательно проанализировано, прежде чем давать какие-либо оценки.
Самое главное, прежде чем предпринимать какие-либо действия, сделайте резервные копии решения и базы данных. Подготовьте новую среду для тестирования обновленного решения, где можно будет проверить все функциональные возможности перед заменой старого решения.
Пошаговое руководство
Я протестировал Optimizely Upgrade Assistant на простом проекте с несколькими типами страниц и блоками.
Первый шаг — установить Assistant с помощью инструмента .NET CLI, выполнив команду из командной строки:
dotnet tool install -g upgrade-assistant
При этом будет установлен помощник по обновлению Microsoft с .Net Framework на .NET Core.
Второй шаг — загрузить расширение Optimizely с Upgrade Assistant GitHub: https://github.com/episerver/upgrade-assistant-extensions/releases
Распакуйте файлы во временную папку, например: C:TempEPi.Source.Updater.1.0.33.
Затем запустите команду для обновления запускаемого проекта:
upgrade-assistant upgrade {projectName}.csproj --extension C:TempEPi.Source.Updater.1.0.33 --ignore-unsupported-features
После завершения процедуры обновления у вас возникнет множество проблем с зависимостями (как старые пакеты Episerver, так и новые), нерешенные проблемы с кодом, проект не структурирован в соответствии со стандартами .Net Core (нет папки wwwroot, статические файлы все еще находятся в проекте). root), Program.cs и Startup.cs нуждаются в корректировке, код из Global.asax.cs не перенесен…
Итак, для такого небольшого проекта предстоит проделать большую работу. В качестве альтернативы, вместо запуска помощника по обновлению, я бы начал с создания нового решения с пустым проектом Optimizely CMS на основе .NET 6 (с использованием шаблона проекта Optimizely Visual Studio). Затем постепенно перенесите код из старого решения в новое. Скопируйте статические файлы в папку wwwroot, скопируйте внутренние файлы. Установите отсутствующие пакеты NuGet, но с их версиями .Net Core. Некоторые пакеты будут иметь разные API, поэтому вам придется обновить сигнатуры методов или даже полностью переписать некоторые части кода, если метод больше не поддерживается.
Имейте в виду, что .Net Core имеет другой механизм внедрения зависимостей, ведение журнала, фильтры исключений, обработку JSON, контроллеры блоков теперь являются компонентами и т. д.
Для этого процесса не существует волшебной палочки, и его необходимо выполнять вручную. В конце, после успешной сборки проекта, перенесите пользователей БД с помощью скрипта, расположенного в папке EPi.Source.Updater.1.0.33.
Должен ли я обновиться?
Это решение необходимо принять, ответив на несколько вопросов:
- Планирую ли я дальнейшее развитие текущего решения? Если да, то вам следует рассмотреть возможность обновления
- удовлетворен ли я производительностью текущего решения? Если нет, то вам следует рассмотреть возможность обновления
- принесут ли инвестиции в модернизацию значительную ценность компании? Если да, то вам следует рассмотреть возможность обновления
Рекомендации
https://learn.microsoft.com/en-us/aspnet/core/migration/proper-to-2x/?view=aspnetcore-6.0
https://github.com/episerver/upgrade-assistant-extensions
https://docs.developers.optimizely.com/content-management-system/docs/upgrade-assistant
https://world.optimizely.com/resources/videos/video/?vid=300437
https://www.youtube.com/watch?v=Fvys7G2Vdvc
13 мая 2024 г.