Яка різниця між .NET Core, .NET Framework та Xamarin?


362

Microsoft тепер має .NET Core, .NET Framework та Xamarin (Mono) у своїй родині .NET.

Здається, тут багато перекриттів. Яка різниця між цими типами .NET? Коли я повинен вибрати .NET Core у своєму проекті, а не .NET Framework чи Xamarin?


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.

Обидва варіанти є відкритим кодом, але .NET Core безпосередньо та офіційно підтримується корпорацією Майкрософт і матиме значні інвестиції вперед.

При використанні .NET Core на різних платформах найкращий досвід розробки існує в Windows з Visual Studio IDE, який підтримує багато функцій продуктивності, включаючи управління проектами, налагодження, контроль джерела, рефакторинг, багате редагування, включаючи Intellisense, тестування та багато іншого. Але також підтримується багата розробка за допомогою коду Visual Studio на Mac, Linux та Windows, включаючи інтелігенцію та налагодження. Навіть сторонні редактори, такі як Sublime, Emacs, VI та більше, добре працюють і можуть отримати редактор інтеліссенс за допомогою проекту 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 справді світять. Чим більше ви можете зробити з однаковою кількістю інфраструктури / обладнання, тим багатшим буде досвід для ваших кінцевих користувачів - за менших витрат.

Дні поліпшення законодавства Мура для окремих процесорів більше не застосовуються; все ж вам потрібно зробити більше, поки ваша система зростає і потребує більш високої масштабованості та продуктивності для більш вимогливих користувачів щоденного життя, які зростають в експоненціальній кількості. Вам потрібно зробити більш ефективним, оптимізувати всюди та краще масштабувати в кластерах машин, VM та ядер процесора, врешті-решт. Це не лише питання задоволення користувача; це також може змінити велику вартість / TCO. Ось чому важливо прагнути до продуктивності та масштабованості.

Як уже згадувалося, якщо ви зможете виділити невеликі шматки вашої системи як мікропослуги або будь-який інший підхід, який буде зв'язаний нещільно, це буде краще, оскільки ви зможете не просто розвивати кожен маленький шматок / мікросервіс, а мати кращу довгострокову перспективу спритність та обслуговування, але ви також зможете використовувати будь-яку іншу технологію на рівні мікросервісу, якщо те, що вам потрібно зробити, не сумісне з .NET Core. Зрештою, ви зможете переробити його та перенести його до .NET Core, коли це можливо.

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

Цей підхід необов’язковий при використанні .NET Core. Ви, звичайно, також можете використовувати повний ID ID 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 до 2. Основна основа стосується скоріше залежностей від рефакторингу для усунення невідповідного багажу, ніж переписування API, що здебільшого є, але не зовсім незмінним. Деякі речі також значно спрощуються, наприклад, EF Core.
Пітер Вун

Дякую за описову відповідь
Tolga Kartal

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 / настільні на даний момент.

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 є крос-платформним.
Нейт Барбеттіні

Тоді було б корисно для greenhorns, якщо ви згадаєте, що Хоча .Net core ( час роботи та бібліотеки ) є крос-платформою, ми не можемо використовувати додаток UWP в Mac / Linux. UWP не є кросплатформою, я очікував, що UWP стане кросплатформою альтернативою WPF (Xamarin.Forms є)
Хассан Тарек

@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 / стандарт / вибір сервера-core-Framework


12
  1. .NET - це екосистема, заснована на мові c #
  2. .NET Standard - це стандарт (іншими словами, специфікація) .NET Ecosystem.

.Net Основна бібліотека класів побудована за стандартом .Net . .NET Standard можна створити лише проект бібліотеки класів, який не може бути виконаний окремо і на нього має посилатися інший виконуваний проект .NET Core або .NET Framework . Якщо ви хочете реалізувати бібліотеку, яка переноситься на .Net Framework , .Net Core та Xamarin , виберіть .Net Standard Library

  1. .NET Framework - це основа, заснована на .NET, і вона підтримує Windows та веб-додатки

(Ви можете зробити виконавчий проект (наприклад, додаток Console або 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

Далі голосу видалено, тепер, коли ви оновили та задокументували свою відповідь правильно :-)
шауті

Думаю, що я просто буду розвиватись на Apple ...
Річард Хаммонд,

7

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


1
Це брехня. .NET Core не може підтримувати WPF / WinForms в Linux!
Вінсент

Це правда, але інші варіанти .NET теж не підтримували це. Вибір варіанту .NET відсутній, що добре.
янленд

1

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

Xamarin - це платформа, яка пропонує рішення для мобільних проблем із платформою, кодованими в C #, так що вам не потрібно використовувати Swift окремо для IOS і те саме стосується Android.


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.

Така різниця у двох реченнях.


Хм .. ну окрім відсутності 3-го варіанту (.net frame) це не зовсім вірно. Ядро .NET можна використовувати майже в усьому (Web, Desktop, Mobile, Cloud, Gaming, IoT тощо). .NET Framework орієнтований на Windows і повністю закритий. Моно була версією .NET Framework з відкритим кодом (керованою спільнотою), яку використовував Xamarin, яка поставила мобільні інструменти між платформами поверх моно. Зрештою, Xamarin буде замінений, швидше за все, Blazor (на даний момент pwa, але гібрид, а потім рідний - частина дорожньої карти).
шокс

Це правда. 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/


Ця відповідь не має сенсу.
Кирил1512
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.