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

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

Кажется, здесь много общего. В чем разница между этими типами платформ .NET? Когда мне следует выбрать использование .NET Core в моем проекте вместо .NET Framework или Xamarin?


person MeeChao    schedule 27.06.2016    source источник
comment
Отсутствует тег microsoft, но его не существует. Этот вопрос предполагает Microsoft. Сегодня вам также нужно выбирать между: для настольных приложений с графическим интерфейсом: например, Джава. Для мобильных устройств: собственный android / objective-C или одна из многих других кроссплатформенных платформ. Для Интернета: например, колба. Как показывает ответ с упоминанием .Net5, Microsoft отчаянно пытается закрепиться на других платформах, кроме MS-Windows, и ощущает конкуренцию Mono с открытым исходным кодом, но пока не нашла стабильного решения.   -  person Roland    schedule 15.01.2021


Ответы (9)


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

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

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

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

При использовании .NET Core на разных платформах лучший опыт разработки достигается в среде Windows с интегрированной средой разработки Visual Studio, которая поддерживает множество функций повышения производительности, включая управление проектами, отладку, управление исходным кодом, рефакторинг, расширенное редактирование, включая Intellisense, тестирование и многое другое. Но расширенная разработка также поддерживается с использованием Visual Studio Code на 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 действительно сияют. Чем больше вы можете сделать с таким же объемом инфраструктуры / оборудования, тем более широкие возможности вы получите для конечных пользователей - при меньших затратах.

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

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

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

Этот подход не является обязательным при использовании .NET Core. Конечно, вы также можете использовать полную интегрированную среду разработки Visual Studio. Но если вы разработчик, который хочет разрабатывать легкие редакторы и интенсивно использовать командную строку, .NET Core разработан для интерфейса командной строки. Он предоставляет простые инструменты командной строки, доступные на всех поддерживаемых платформах, позволяя разработчикам создавать и тестировать приложения с минимальной установкой на машины разработчика, лаборатории или производственной среды. Редакторы, такие как Visual Studio Code, используют одни и те же инструменты командной строки для разработки. И IDE, как и Visual Studio, используют те же инструменты 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?
person Fiona Bi    schedule 28.06.2016
comment
Почему asp.net Core более производительный? Почему лучше, когда вы создаете микросервисы? - person Juan Zamudio; 19.01.2017
comment
Теперь также доступна Visual Studio для Mac. Итак, еще один положительный момент в отношении .NET Core. visualstudio.com/vs/visual-studio-mac - person Husyn; 11.05.2017
comment
Ваши ссылки не работают - person shaneparsons; 24.01.2018
comment
@JuanZamudio Версии фреймворка представляют собой монолитные уровни, каждый из которых зависит от непосредственно предшествующей версии, в цепочке зависимостей до версии 2.0, которая полностью заменила 1.1. В результате, если вы используете что-нибудь из 4.5, вы неявно зависите от всего, начиная с 2.0. Фреймворк Core больше связан с рефакторингом зависимостей для устранения ненужного багажа, чем с переписыванием API, который в основном, но не полностью, остается неизменным. Некоторые вещи также значительно упростились, например, EF Core. - person Peter Wone; 15.06.2018
comment
Они отличаются только в одном: в ближайшие 5 лет MS откажется от Core. Пока программист все еще использует .NET FW 4.8 и WinForms / WPF. - person Vincent; 12.04.2020

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

.NET Framework, .NET Core, Xamarin

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

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

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)

person Nate Barbettini    schedule 27.06.2016
comment
Когда кто-то говорит, что .NET Core кроссплатформенный, новый разработчик сбивается с толку. .NET Core поддерживает только UWP + ASP.NET Core и ASP.NET Core является кроссплатформенным, а UWP - нет. - person Hassan Tareq; 19.12.2017
comment
@HassanTareq Это не совсем правильно. .NET Core относится к среде выполнения и библиотекам, которые могут работать в Windows, Mac или Linux. ASP.NET Core кроссплатформенный, потому что .NET Core кроссплатформенный. - person Nate Barbettini; 19.12.2017
comment
Тогда новичкам будет полезно упомянуть, что хотя ядро ​​.Net (среда выполнения и библиотеки) является кроссплатформенным, мы не можем использовать приложение UWP в Mac / Linux. UWP не является кроссплатформенным, я ожидал, что UWP будет кроссплатформенной альтернативой WPF (Xamarin.Forms - это) - person Hassan Tareq; 20.12.2017
comment
@HassanTareq Хорошее предложение, я отредактировал свой ответ. - person Nate Barbettini; 20.12.2017
comment
UWP работает на .NET Core, а не на .NET Framework. Поправьте меня, если я ошибаюсь. Для Ссылка - person Dishant; 08.08.2018
comment
Xamarin Forms теперь работает практически на всем из единой базы кода. Рабочий стол Windows UWP, рабочий стол WPF, MacOS, iOS, Android и Tizen (телевизоры). По умолчанию используется .NET Standard из реализации Core. Хорошие времена! - person Sean Anderson; 05.03.2019

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

.NET Framework, .NET Core, Xamarin

Xamarin - это вообще не дискуссия. Если вы хотите создавать мобильные приложения (iOS, Android и Windows Mobile) с использованием C #, 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/choice-core-framework-server

person logeshpalani32    schedule 03.02.2018
comment
Третье поле должно быть Mono, что является еще одной реализацией стандарта .Net. Xamarin - нет, это просто кроссплатформенная библиотека, которая работает поверх Mono (или используется ??). Чтобы еще больше запутать ситуацию, Xamarin (компания) купила Mono (компанию), и оба позже были куплены Microsoft. - person BlueRaja - Danny Pflughoeft; 02.06.2021

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

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

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

(Вы можете создать исполняемый проект (например, консольное приложение или приложение ASP.NET) с помощью .NET Framework

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

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

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

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

person Razib Hossain    schedule 01.03.2019
comment
Голосование против удалено, теперь, когда вы правильно обновили и задокументировали свой ответ :-) - person shawty; 30.10.2019

.NET 5 будет унифицированной версией всех вариантов .NET, которые появятся в ноябре. 2020, поэтому больше не нужно будет выбирать между вариантами. введите описание изображения здесь

person yanlend    schedule 10.12.2019
comment
Это ложь. .NET Core не поддерживает WPF / WinForms в Linux! - person Vincent; 12.04.2020
comment
Это правда, но другие варианты .NET также не поддерживают это. Выбора варианта .NET больше нет, и это хорошо. - person yanlend; 11.05.2020

  • .NET Framework - только устаревшая реализация Microsoft .NET для Windows. Введен в 2002 году, выводится из употребления.
  • .NET 5 (преемник .NET Core 3.1) - современная переопределенная версия .NET Framework, направленная на ее замену, поддерживает Windows, macOS и Linux. Представленная в 2016 году следующая версия может поглощать Xamarin.
  • Xamarin - Mono с привязками платформы к ОС, отличным от Windows, и API-интерфейсам, а также инструментам, специально предназначенным для разработки мобильных приложений (iOS, Android и, в последнее время, настольные компьютеры). Представлен в 2012 году. Mono - это реализация .NET сторонней компании Microsoft, разработанная сообществом и представленная в начале 2000-х годов и конкурирующая с .NET Framework.
person J. Doe    schedule 02.03.2021

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

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

person Marto99    schedule 23.01.2019
comment
Я бы сказал, что .Net Core - это то, что вам следует использовать, если вы должны работать в Linux или Linux и Windows. Но я думаю, вы могли бы сделать это и для Mono. У него, конечно, больше нет функций. По определению это только основные биты, у него нет ни одного из битов только для Windows, следовательно, меньше функций. Я только догадываюсь, но кажется маловероятным, что в .Net Core будет меньше ошибок. .Net Framework существует в мире почти два десятилетия. Я полагаю, что на данный момент он довольно закален в боях. Но это всего лишь предположение. - person Jason Boyd; 15.02.2019
comment
В нем, безусловно, есть больше новых функций, недавно они добавили новые классы, которые не будут добавлены в .NET 4.8. Они также портировали WPF и WinForms. На самом деле похоже, что .NET Core может заменить .NET Framework. Он тоже кажется более производительным. - person asdf; 05.03.2019

Xamarin используется для телефонных приложений (как для IOS, так и для Android). .NET Core используется для разработки веб-приложений, которые могут работать как в Apache, так и в IIS.

В этом разница в двух предложениях.

person user10868910    schedule 28.05.2020
comment
Хм .. ну, если не считать отсутствия третьего варианта (.NET framework), это не совсем так. Ядро .NET можно использовать практически во всем (Интернет, компьютер, мобильный телефон, облако, игры, Интернет вещей и т. Д.). .NET Framework ориентирована на окна и была полностью закрыта. Mono - это версия .NET Framework с открытым исходным кодом (управляемая сообществом), используемая Xamarin, которая помещает кроссплатформенные мобильные инструменты поверх mono. В конечном итоге Xamarin будет заменен, скорее всего, на Blazor (в настоящее время pwa, но гибридные, а затем нативные являются частью дорожной карты). - person shox; 28.05.2020
comment
Это правда. Xamarin предназначен для мобильных приложений. Не думаю, что скоро его заменят. ASMX по-прежнему используется для веб-служб и включен в Visual 2019. - person user10868910; 30.05.2020

.Net Frame work используется для базовых приложений Windows. .Net Core Frame используется для базовых кроссплатформенных приложений. Работа Xamarin Frame используется для разработки мобильных приложений.

person Saddam Akhtar    schedule 12.07.2021