В чем разница между .NET Framework и .NET Core?

Microsoft .NET

Microsoft предоставляет две разные среды выполнения .NET: .NET Framework и .NET Core. Оба реализуют .NET Standard, и код между ними достаточно кросс-совместим, но .NET Framework работает только в Windows. Мы обсудим различия между двумя средами выполнения.

Краткий ответ: кроссплатформенная совместимость

Быстрый ответ: .NET Core работает в Linux и macOS, а .NET Framework работает только в Windows. Вы бы использовали .NET Core, когда вам нужна кросс-платформенная совместимость, и вы бы использовали .NET Framework, когда вам нужны специальные службы Windows и пакеты NuGet, которые не были перенесены в .NET Core.

.NET Core является преемником .NET Framework, так что это определенно то, что вы хотите выбрать в будущем. Он оставляет после себя некоторые функции только для Windows, но многие из них все еще могут поддерживаться Пакет обеспечения совместимости с Windows расширение.

В целом Core и Framework почти одинаковы, но на практике у них есть небольшие различия. И .NET Core, и .NET Framework используют один и тот же API, называемый .NET Standard, но Core имеет открытый исходный код, а Framework — это реализация Microsoft только для Windows.

В общем, Core немного легче, чем Framework, так как он разработан и часто используется с Docker в серверных модулях на основе микросервисов. Помимо возможности использовать Linux в первую очередь (что необходимо для Docker), получившийся образ будет немного меньше с .NET Core.

Помимо этого, большая часть различий заключается в различиях пакетов NuGet. Например, Entity Framework Core немного отличается от Entity Framework 6, который работает на .NET Framework. ASP.NET Core сильно отличается от ASP.NET 4, поскольку они многое переработали для .NET Core.

Когда использовать .NET Core

Вы должны использовать .NET Core поверх .NET Framework в следующих случаях:

  • Вы необходимость кроссплатформенная совместимость. Сюда входит использование архитектур Docker и микросервисов.
  • Вы начинаете новый проект, и вам просто нужно выбрать один. (.NET Core новее.)
  • Вы не используете специальные инструменты, библиотеки или пакеты NuGet для Windows, которые зависят от .NET Framework.
  • Вы хотите максимально возможную производительность. Microsoft рекомендует .NET Core с ASP.NET вместо .NET Framework.
  • Вы хотите запускать несколько версий .NET Core одновременно друг с другом. Framework не поддерживает это.
  • Вы хотите получить доступ к интерфейсу командной строки в Linux или запустить сервер сборки CI / CD в Linux.

Когда использовать .NET Framework

Вы должны использовать .NET Framework поверх .NET Core в следующих случаях:

  • Вы ориентируетесь только на развертывание Windows.
  • Вы интенсивно используете пакеты и библиотеки Windows, такие как Windows Forms, WPF, ASP.NET Web Forms / Pages и Windows Workflow Foundation.
  • Используемые вами технологии не добавляются Пакет обеспечения совместимости Windows для .NET Core.
  • Вы уже используете его, и миграция потребует слишком много усилий.

Как перейти на .NET Core

Обычно это будет «как переключиться с Framework на Core», потому что любой существующий работающий проект на .NET Core, скорее всего, не нуждается в переключении обратно на старую .NET Framework.

Если вы используете что-то специфичное для Windows, вы не сможете. Вы застряли на .NET Framework до тех пор, пока используемые вами компоненты не получат версии Core, а некоторые вещи не будут происходить, как с ASP.NET WebForms.

Самым простым решением было бы создать новое Решение и проект на основе .NET Core и перенести туда свой код. Если у вас есть простое приложение, это, вероятно, самое простое решение.

В противном случае вы можете использовать dotnet try-convert, или следовать Руководство Microsoft по портированию.

Для больших сложных проектов вы можете использовать Анализатор переносимости .NET. Это инструмент от Microsoft, который просканирует ваш проект, расскажет, насколько сложным может быть преобразование, и покажет, какими должны быть ваши следующие шаги.

Он также может создать ориентированный график ваших зависимостей, который поможет вам увидеть, что еще требует анализа. Некоторые проекты будет сложнее перенести, чем другие, и если вы используете что-то, недоступное в Core, возможно, вы вообще не сможете перенести без обходного пути.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *