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

362

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

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

MeeChao
источник
2
Хороший вопрос! Вот дополнительная статья о .net framework и .net core. pogsdotnet.blogspot.sg/2017/11/… Спасибо!
Аллан Чуа

Ответы:

269

Вы должны использовать .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. Но если вы разработчик, который хочет разрабатывать с легкими редакторами и интенсивным использованием командной строки, .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?
Фиона Би
источник
17
Почему asp.net Core более производительный? Почему лучше, когда вы строите микросервисы?
Хуан Самудио
4
Теперь Visual Studio для Mac также доступна. Итак, еще один положительный момент в отношении .NET Core. visualstudio.com/vs/visual-studio-mac
Гусин
8
Ваши ссылки не работают
shaneparsons
2
@JuanZamudio Версии фреймворка - это монолитные слои, каждый из которых зависит от непосредственно предыдущей версии, в цепочке зависимостей до версии 2.0, которая полностью заменила 1.1. В результате, если вы используете что-то от 4.5, вы неявно зависите от всего, что когда-либо, вплоть до 2.0. Базовая структура больше связана с рефакторингом зависимостей для устранения ненужного багажа, чем с переписыванием API, которое в основном, но не полностью, остается неизменным. Некоторые вещи также значительно упростились, например, EF Core.
Питер Воне
Спасибо за наглядный ответ
Толга Картал
171

Вот как 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
Всякий раз, когда кто-то говорит, что .NET Core является кроссплатформенным, новый разработчик запутывается. «.NET Core» поддерживает только UWP + ASP.NET Core, а ASP.NET Core кроссплатформенный, UWP - нет.
Хасан Тарек
@HassanTareq Это не совсем правильно. .NET Core относится к среде выполнения и библиотекам, которые могут работать в Windows, Mac или Linux. ASP.NET Core является кроссплатформенным, поскольку .NET Core является кроссплатформенным.
Нейт Барбеттини
Тогда было бы полезно, если бы вы упомянули, что хотя ядро ​​.Net (среда выполнения и библиотеки ) является кроссплатформенным, мы не можем использовать приложение UWP в Mac / Linux. UWP не является кроссплатформенным, я ожидал, что UWP будет кроссплатформенной альтернативой WPF (Xamarin. Forms is)
Хасан Тарек
@HassanTareq Хорошее предложение, я отредактировал свой ответ.
Нейт Барбеттини
1
Xamarin Forms теперь работает практически на всем из одной базы кода. Рабочий стол Windows UWP, рабочий стол WPF, MacOS, iOS, Android и Tizen (телевизоры). По умолчанию целью является .NET Standard из базовой реализации. Хорошие времена!
Шон Андерсон
35

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

.NET Framework, .NET Core, 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 / стандарт / выбор-ядро-каркасный сервер

logeshpalani98
источник
12
  1. .NET является экосистемой на основе C # языка
  2. Стандарт .NET - это стандарт (другими словами, спецификация) .NET Ecosystem.

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

  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- поддержка] )

Разиб Хоссейн
источник
Проголосуйте за таблицу «История версий». Это не «История версий» .net / standard или core, которую вы воспроизвели. Это минимальные жизнеспособные версии платформы, которые вы можете использовать, если хотите соответствовать определенной стандартной версии .Net. EG: если вы хотите поддерживать .NET Standard 1.4 на Full .NET, самая низкая версия , которую вы можете использовать это 4.6.1
Shawty
Вниз Голосуйте удалены, теперь, когда вы обновили и задокументирован свой ответ правильно :-)
Shawty
Думаю, я просто буду разрабатывать на Apple ...
Ричард Хаммонд
7

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

yanlend
источник
1
Это ложь. .NET Core не поддерживает WPF / WinForms в Linux!
Винсент
Это правда, но другие варианты .NET также не поддерживали это. Выбор варианта .NET исчез, и это хорошо.
Янлэнд
1

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

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

Marto99
источник
2
Я бы сказал .Net Core - это то, что вы должны использовать, если вы должны работать на Linux или Linux и Windows. Но я думаю, вы могли бы сделать это и для Моно. Это, конечно, не имеет больше возможностей. По определению, это только «основные» биты, у них нет ни одного из битов только для Windows, следовательно, меньше возможностей. И я просто догадываюсь, но кажется маловероятным, что в .Net Core меньше ошибок. .Net Framework существует в мире почти два десятилетия. Я предполагаю, что это довольно закаленное в этой точке. Но это всего лишь предположение.
Джейсон Бойд
У него, безусловно, есть больше новых функций, недавно были добавлены новые классы, которые не будут добавлены в .NET 4.8. Они также портировали WPF и WinForms. На самом деле, похоже, что .NET Core может заменить .NET Framework. Вроде бы и более производительный.
asdf
0

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

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

user10868910
источник
Хм .. ну, кроме пропуска 3-го варианта (.net framework), это не совсем так. Ядро .NET можно использовать практически во всем (в Интернете, на компьютере, в мобильном телефоне, в облаке, в играх, в Интернете и т. Д.). .NET Framework ориентирована на Windows и была полностью закрыта. Mono была версией .NET Framework с открытым исходным кодом (управляемой сообществом), используемой Xamarin, которая поставила кроссплатформенный мобильный инструментарий поверх моно. Xamarin в конечном итоге будет заменен, скорее всего, Blazor (в настоящее время PWA, но гибридные, а затем родные являются частью дорожной карты).
Shox
Это правда. Xamarin для мобильных приложений. Я не думаю, что это будет заменено в ближайшее время. ASMX по-прежнему используется для веб-служб и включен в Visual 2019.
user10868910
-1

обновлено в мае 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/

yangching
источник
Этот ответ не имеет смысла.
Kiril1512