Содержание:
Одним из направлений деятельности нашей компании является веб-разработка. Для разработки сайтов мы используем ASP.NET MVC, и, по обыкновению, хостингом для нашего добра служит Windows Server. Но время идет, появляются новые технологии, а старые технологии эволюционируют, как, впрочем, и желания наших клиентов.
Со временем возникла нужда запустить новый проект на хостинге linux. Все бы ничего, задача, казалось бы, относительно тривиальная. Но в потребностях значилось использование нашей CMS, написанной на стеке ASP.NET MVC 5, что значительно усложняло задачу.
Поразмышляв, мы решили что наиболее подходящим вариантом будет перенос наших наработок на стек ASP.NET Core. В процессе миграции на рельсы новых технологий возникло достаточно много интересных моментов и сложностей.
Для наглядности ниже приведена таблица с перечислением стека технологий, который был использован для разработки нашего проекта изначально и заменами, выбранными для реализации процесса миграции.
Использовалось | Наш выбор |
---|---|
Windows Server 2012 R2 | Debian 8.8 |
IIS 8.5 | Kestrel в связке Nginx 1.12 |
.NET framework 4.6 | .NET Core |
ASP.NET MVC 5 | ASP.NET Core 1.1 |
Microsoft SQL Server | .NET Core 1.1 |
Entity Framework 6.1.3 | Entity Framework 1.1 |
Встроенный механизм для создания бандлов и минификации | WebPack 2 |
Для запуска и сборки проекта можно использовать dotnet run. Можно немного облегчить задачу и использовать команду dotnet run -watch . Данная команда запускает dotnet в режиме наблюдения за изменениями кода, и когда происходят изменения, проект автоматически пересобирается и затем запускается.
Чтобы ее использовать нужно добавить в файл проекта .csproj следующий код
После сохранения нужно набрать dotnet restore, для того чтобы необходимый пакет загрузился из NuGet в наш проект.
Для создания миграции в Entity Framework Core можно использовать команду dotnet ef migrations add {название миграции}.
Чтобы применить миграцию нужно использовать команду dotnet ef database update.
Чтобы использовать эту команду нужно добавить в .csproj следующий код:
И, естественно, использовать после этого команду dotnet restore.