.NET Core: переходить или нет?
Выход .NET Core 2.0 этим летом сопровождается бесчисленными обсуждениями, но на самом деле это не универсальная для всех проектов версия .NET.
Когда о выходе было объявлено в июне прошлого года, .NET Core был описан Microsoft как «кросс-платформенная платформа с открытым исходным кодом и модульная платформа .NET для создания современных веб-приложений, микросервисов, библиотек и консольных приложений» для работы в Windows, Linux и Mac.
Поскольку .NET Core 2.0 и связанный с ним .NET Standard 2.0 обеспечивали доступ к десяткам тысяч API-интерфейсов .NET, по сравнению с предыдущими версиями, многие разработчики рассматривали возможность перехода на новую платформу и перенос существующих проектов на нее.
Тем не менее, Microsoft советует разработчикам немного притормозить и убедиться, что их проекты действительно подходят для перехода на .NET Core.
“Есть веские причины, по которым вы, возможно, не захотите переносить на .NET Core, - заявил недавно Иммо Лэндверт из Microsoft, анонсируя выход. Ранее, как уже упоминалось, эти причины включали отсутствие API. Однако даже имея новые API-интерфейсы, в начале своего поста и сопроводительного видео Лэндверт подчеркнул, что разработчики должны хорошо подумать, прежде чем сделать этот шаг.
“Конечно, все зависит от того, что вы делаете. Если вы создаете приложения Windows Forms или UWP или используете приложения WebForms, вам, вероятно, не следует переносить проекты в .NET Core, поскольку .NET Framework по-прежнему лучше всего подходит для этого,” - говорит Лэндверт в видео.
В видеоролике Immowerth рассмотрел проблему следующим образом.
Причины не переносить:
- Вы создаете настольные приложения (WinForms, WPF)
- Вы создаете приложения ASP.NET Web Forms
- Вы просто довольны существующим положением.
Причины для переноса:
- Вы хотите создать высоко масштабируемые веб-приложения
- Вы хотите запускать свои веб-приложения в Linux
- Вы хотите автономные развертывания
«Но прежде чем начать портирование, вы должны понять,что вы хотите достичь с помощью миграции», - сказал Лэндверт в своем блоге. «Портирование на .NET Core, только потому, что это новая реализация .NET, не самая лучшая причина (если только вы не настоящий фанат)».
«.NET Core оптимизирован для создания масштабируемых веб-приложений, работающих под управлением Windows, MacOS или Linux. Если вы создаете настольные приложения для Windows, то .NET Framework - лучший выбор для вас».
Используйте .NET Core для своего серверного приложения, когда:
- У вас есть кросс-платформенные потребности
- Вы ориентируетесь на микросервисы
- Вы используете докерные контейнеры
- Вам нужны высокопроизводительные и масштабируемые системы
- Вам нужны side-by-side версии .NET для каждого приложения
Используйте .NET Framework для своего серверного приложения, когда:
- Ваше приложение в настоящее время использует .NET Framework (рекомендуется продлить вместо миграции)
- В вашем приложении используются сторонние библиотеки .NET или пакеты NuGet, недоступные для .NET Core
- В вашем приложении используются технологии .NET, которые недоступны для .NET Core
- В вашем приложении используется платформа, которая не поддерживает .NET Core
После изучения все эти факторов, разработчики, которые все же решили, что им необходим перенос на .NET Core, могут использовать новый пакет обеспечения совместимости Windows, представленный Лэндвертом .
«Он обеспечивает доступ к дополнительным 20 000 API, по сравнению с тем, что доступно в .NET Core, - говорит Лэндверт о пакете, который все еще разрабатывается в программе предварительного просмотра. «ОН включает в себя рисование, Журнал событий Windows, инструментирование управления Windows (WMI)I, счетчики производительности, службы Windows и многое другое».
В посте Лэндверта подробно рассказывается о том, как использовать этот инструмент в сочетании с новым API-анализатором, чтобы разработчики могли быть уверены, что их проекты не зависят от API-интерфейсов Windows.
Однако, Лэндверт закончил свой пост тем же предупреждением, которым начинал: «Но помните, что .NET Framework по-прежнему остается лучшим выбором для создания настольных приложений, а также веб-приложений на основе Web Form. Если вы довольны .NET Framework, также нет причин для переноса в .NET Core ».