вторник, 26 сентября 2017 г.

Советы по миграции приложений классического ASP.NET на ASP.NET Core

ASP.NET уже давно является популярным фреймворком для разработки, а точнее с момента своего появления в 2002. Однако веб разработка на старом ASP.NET была ориентрирована на Windows. Для того что бы получить поддержку и на других платформах Microsoft выпустила .NET Core. ASP.NET Core это фреймворк для разработки веб приложений который выполняется на .NET Core.
Microsoft выпустила .NET Core 1.0, ASP.NET Core 1.0 и Entity Framework Core 1.0 в июне 2016. Этот релиз стал началом новой эры – эры в которой веб разработчики могут создавать приложения ориентированные на различные операционные системы.

ASP.NET Core это очень серьёзное изменение старого ASP.NET и он уже стал весьма популярным. ASP.NET Core это базовый, составной фреймворк с открытым исходным кодом который вы можете использовать для создания веб и клауд приложений. ASP.NET Core – кроссплатформенный фреймворк – он доступен на Windows, Linux и Mac. Данная статья описывает стратегию которая может использоваться для перехода с ASP.NET на ASP.NET Core.

Переход к ASP.NET Core

Пожалуй самый главный момент о котором вы должны помнить когда будете переходить со старого ASP.NET на ASP.NET Core – это те изменения в коде которые вам необходимо сделать для решения вопросов совместимости. Я буду рассказывать о существующих средствах, которые облегчаю этот процесс, позже в этой статье. Вы должны создать список ссылок BCL и зависимостей, которые необходимо изменить если они не используются в .NET Core. Обратите внимание что .NET Core это просто подмножество фреймворка .NET – поэтому, вам пожалуй будет интересно узнать что в вашем коде придется менять для того что бы он работал на новом фреймворке. Другой момент о котором вы должны позаботиться, это сторонние зависимости, которые должны быть либо изменены, либо, в худшем случае, вовсе удалены при миграции на .NET Core.
Первое, что вы должны сделать – это создать новый пустой проект “ ASP.NET Core Web application” с таким же названием как и у вашего старого проекта. Я бы посоветовал снача создавать проект с минимальным набором кода и функциональности, а уж потом по мере продвижения переносить код со старого проекта в новый.
Примечание: Проект на .NET Core должен иметь указаную версию используемого .NET Core в секции <TargetFramework> проектного файла csproj, как показано ниже.
<TargetFramework>netcoreapp2.0</TargetFramework>
Также необходимо указать информацию о используемой версии в global.json.
{
   "sdk": {
      "version": "2.0.0"
   }
}
Похожим образом необходимо указать версию в секции <ItemGroup> проектного файла.   


<ItemGroup>
   <PackageReference Include="Microsoft.AspNetCore.All"
      Version="2.0.0" />
</ItemGroup>

Вы можете обратиться к документупо миграции для получения более подробной информации.

Использование .NET Portability Analyzer

Наилучшей стратегией для понимания процесса миграции является анализ требований по переносу. И здесь вам придет на помощь the .NET Portability Analyzer. Это отличное средство которое позволит вам с пользой проанализировать процесс портирования вашего приложения на .NET Core.
Есть три вариации .NET Portability Analizer, которые включают следующее:
  • Консольное приложение
  • Расширение Visual Studio
  • .NET Core приложение

Мы будем использвать расширение студии для примера. Для того что бы начать с инструментом работу, выполните следующие шаги:

  1. В студии нажмите на Tools -> Extensions and Updates
  2. Далее, выберите .NET Portability Analizer и укажите целевую платформу – версии .NET Core и ASP.NET Core на которые нужно мигрировать существующее приложние.
  3. Создайте новый проект ASP.NET и укажите для него .NET Framework 4.6
  4. Назовите и сохраните проект
  5. Выберите его и нажмите на "Analyze Assembly Portability" в контекстном меню.

После окончания анализа вы получите отчет в окне Portability Analysis Results. Обратите внимание что окно содержит три закладки:
  • Portability Summary: Отображает итоговый отчет, которые содержит информацию о портировании проекта на целевую платформу
  • Details: Эта закладка показывает более подробную информацию которая поможет понять существующие несовместимости.
  • Missing Assemblies: Эта закладка содержит список сборок и компонентов, котоыре не были включены в отчет. Основная причина их исключения – то что они находтся в Global Cache Assembly (GAC)

Вы можете более подробно разобраться со стратегиями миграции здесь.

Выводы

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