Какая разница между .NET Core,.NET Framework и Xamarin?

Microsoft теперь имеет .NET Core,.NET Framework и Xamarin (Mono) в своем семействе .NET.

Здесь, похоже, много перекрытий. Какая разница между этими типами .NET? Когда я должен использовать .NET Core в своем проекте вместо .NET Framework или Xamarin?

Ответ 1

Вы должны использовать .NET Core вместо .NET Framework или Xamarin в следующих 6 типичных сценариях в соответствии с документацией здесь.

1. Кроссплатформенные потребности

Понятно, что если ваша цель - иметь приложение (веб/сервис), которое должно работать на разных платформах (Windows, Linux и MacOS), лучшим выбором в экосистеме .NET является использование .NET Core в качестве среды выполнения (CoreCLR). ) и библиотеки кроссплатформенные. Другой выбор - использовать Mono Project.

Оба варианта имеют открытый исходный код, но .NET Core напрямую и официально поддерживается Microsoft и потребует значительных инвестиций в будущем.

При использовании .NET Core на разных платформах лучший опыт разработки существует в Windows с IDE Visual Studio, которая поддерживает многие функции производительности, включая управление проектами, отладку, контроль исходного кода, рефакторинг, расширенное редактирование, включая Intellisense, тестирование и многое другое. Но богатая разработка также поддерживается с использованием кода Visual Studio для Mac, Linux и Windows, включая intellisense и отладку. Даже сторонние редакторы, такие как Sublime, Emacs, VI и другие, работают хорошо и могут получить редактор intellisense, используя проект Omnisharp с открытым исходным кодом.

2. Микросервисы

Когда вы создаете систему, ориентированную на микросервисы, состоящую из нескольких независимых, динамически масштабируемых микросервисов с сохранением состояния или состоянием без состояния, у вас есть большое преимущество в том, что вы можете использовать различные технологии/среды/языки на уровне микросервисов. Это позволяет вам использовать лучший подход и технологию для каждой микрообласти в вашей системе, поэтому, если вы хотите создавать высокопроизводительные и масштабируемые микросервисы, вам следует использовать .NET Core. В конце концов, если вам нужно использовать какую-либо библиотеку .NET Framework, несовместимую с .NET Core, проблем нет, вы можете создать этот микросервис с помощью .NET Framework и в будущем вы сможете заменить его на .NET. ядро.

Платформы инфраструктуры, которую вы могли бы использовать, много. В идеале для больших и сложных микросервисных систем следует использовать Azure Service Fabric. Но для микросервисов без сохранения состояния вы также можете использовать другие продукты, такие как служба приложений Azure или функции Azure.

Обратите внимание, что по состоянию на июнь 2016 года не все технологии в Azure поддерживают .NET Core, но поддержка .NET Core в Azure будет значительно возрастать, когда выпущена версия .NET Core RTM.

3. Лучшие и масштабируемые системы

Когда вашей системе требуется максимально возможная производительность и масштабируемость, а значит, вы получаете наилучшую скорость отклика, независимо от того, сколько у вас пользователей, тогда на самом деле работают .NET Core и ASP.NET Core. Чем больше вы можете сделать с тем же количеством инфраструктуры/аппаратного обеспечения, тем богаче опыт для конечных пользователей - при меньших затратах.

Дни улучшения производительности закона Мура для одиночных процессоров больше не применяются; тем не менее, вам нужно делать больше, пока ваша система развивается, и вам требуется более высокая масштабируемость и производительность для более требовательных пользователей, число которых растет в геометрической прогрессии. Вам необходимо повысить эффективность, оптимизировать всюду и, в конечном счете, лучше масштабировать кластеры машин, виртуальных машин и процессорных ядер. Это не просто вопрос удовлетворенности пользователей; это также может иметь огромное значение в стоимости /TCO. Вот почему важно стремиться к производительности и масштабируемости.

Как уже упоминалось, если вы можете изолировать небольшие части вашей системы в виде микросервисов или любого другого слабосвязанного подхода, это будет лучше, так как вы сможете не только самостоятельно развивать каждый маленький кусочек/микросервис и иметь лучшую гибкость и обслуживание в течение длительного времени, но вы также сможете использовать любую другую технологию на уровне микросервиса, если то, что вам нужно, несовместимо с .NET Core. И в конце концов вы сможете реорганизовать его и, по возможности, перенести в .NET Core.

4. Разработка стиля командной строки для Mac, Linux или Windows.

Этот подход не является обязательным при использовании .NET Core. Конечно, вы также можете использовать полную Visual Studio IDE. Но если вы разработчик, который хочет разрабатывать с легкими редакторами и интенсивным использованием командной строки,.NET Core предназначен для CLI. Он предоставляет простые инструменты командной строки, доступные на всех поддерживаемых платформах, позволяя разработчикам создавать и тестировать приложения с минимальной установкой на машинах разработчика, лаборатории или производства. Такие редакторы, как Visual Studio Code, используют одни и те же инструменты командной строки для своего опыта разработки. А в таких средах IDE, как Visual Studio, используются те же инструменты CLI, но они скрыты за широкими возможностями IDE. Теперь разработчики могут выбирать уровень взаимодействия с цепочкой инструментов от CLI до редактора и IDE.

5. Необходимость рядом версий .NET для каждого уровня приложения.

Если вы хотите иметь возможность устанавливать приложения с зависимостями на разные версии фреймворков в .NET, вам нужно использовать .NET Core, который обеспечивает 100% бок о бок, как описано ранее в этом документе.

6. Приложения для Windows 10 UWP.NET.

Кроме того, вы также можете прочитать:

  1. Когда я НЕ должен использовать .NET Core?
  2. Когда мне все еще следует использовать .NET Framework 4.x вместо .NET Core?
  3. Когда мне следует использовать Xamarin вместо .NET Core?

Ответ 2

Вот как Microsoft объясняет это:

.NET Framework, .NET Core, Xamarin

.NET Framework - это "полный" или "традиционный" вариант .NET, распространяемый вместе с Windows. Используйте это, когда вы создаете настольное приложение Windows или UWP или работаете с более старым ASP.NET 4. 6+.

.NET Core - это кроссплатформенный .NET, который работает на Windows, Mac и Linux. Используйте это, если вы хотите создавать консольные или веб-приложения, которые могут работать на любой платформе, в том числе внутри контейнеров Docker. Это не относится к приложениям UWP/Desktop в настоящее время.

Xamarin используется для создания мобильных приложений, которые могут работать на устройствах iOS, Android или Windows Phone.

Xamarin обычно работает поверх Mono - версии .NET, созданной для кроссплатформенной поддержки до того, как Microsoft решила официально перейти кроссплатформенно с .NET Core. Как и Xamarin, платформа Unity также работает поверх Mono.


Распространенная путаница заключается в том, что ASP.NET Core подходит. ASP.NET Core может работать поверх .NET Framework (Windows) или .NET Core (кроссплатформенный), как подробно описано в этом ответе: Различие между ASP.NET Core (.NET Core) и ASP.NET Core (.NET Framework)

Ответ 3

Вы можете сослаться на эту строку - Разница между ASP.NET Core (.NET Core) и ASP.NET Core (.NET Framework)

.NET Framework, .NET Core, Xamarin

Xamarin вообще не спор. Если вы хотите создавать мобильные (iOS, Android и Windows Mobile) приложения с использованием С#, Xamarin - ваш единственный выбор.

.NET Framework поддерживает Windows и веб-приложения. Сегодня вы можете использовать Windows Forms, WPF и UWP для создания приложений Windows в .NET Framework. ASP.NET MVC используется для создания веб-приложений в .NET Framework.

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

Если вы хотите получить более подробную информацию, пожалуйста, обратитесь к этим ссылкам:https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server

Ответ 4

  1. .NET - это экосистема, основанная на c # языке
  2. .NET Standard - это стандарт (другими словами, спецификация) .NET экосистемы.

.Net Базовая библиотека классов построена на основе .Net Standard..NET Standard вы можете сделать только проект библиотеки классов, который не может быть выполнен автономно и на который должен ссылаться другой исполняемый проект .NET Core или .NETFramework. Если вы хотите реализовать библиотеку, которая является Переносим на .Net Framework, .Net Core и Xamarin, выберите .Net Standard библиотеку

  1. .NET Framework - это основа, основанная на .NET и поддерживающая Windows и веб-приложения
.

(You can make executable project (like Console application, or ASP.NET application) with.NET Framework

  1. ASP.NET - это технология разработки веб-приложений, созданная на основе .NET Framework
  2. ..NET Core также каркас на основе .NET.

Это новая кроссплатформенная инфраструктура с открытым исходным кодом для создания приложений для всех операционных систем, включая Windows, Mac и Linux.

  1. Xamarin - это платформа для разработки кроссплатформенного мобильного приложения (iOS, Android и Windows Mobile) с использованием С#

Поддержка реализации .NET Standard [синий] и минимально жизнеспособной платформы для полной поддержки .NET Standard (последняя версия: [https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support])

Ответ 5

.NET Core - это текущая версия .NET, которую вы должны использовать прямо сейчас (дополнительные функции, исправленные ошибки и т.д.)

Xamarin - это платформа, которая предоставляет решения для межплатформенных мобильных задач, написанных на С#, так что вам не нужно отдельно использовать Swift для IOS, и то же самое касается Android.

Ответ 6

обновлено в мае 2019

вам следует использовать .Net Core 3.0 и более поздние версии для обновления до следующей версии .Net 5, все, что вам нужно, это всего лишь одна унифицированная платформа .Net5

Будет только один .NET в будущем, и вы сможете использовать его для таргетинга> Windows, Linux, macOS, iOS, Android, tvOS, watchOS и WebAssembly и многих других. https://devblogs.microsoft.com/dotnet/introducing-net-5/