Jaka jest różnica między .NET Core, .NET Framework i Xamarin?

362

Microsoft ma teraz .NET Core, .NET Framework i Xamarin (Mono) w swojej rodzinie .NET.

Wydaje się, że tutaj nakłada się wiele. Jaka jest różnica między tymi typami .NET? Kiedy powinienem wybrać .NET Core w moim projekcie zamiast .NET Framework lub Xamarin?

MeeChao
źródło
2
Dobre pytanie! Oto artykuł uzupełniający o frameworku .net i rdzeniu .net. pogsdotnet.blogspot.sg/2017/11/… Dzięki!
Allan Chua,

Odpowiedzi:

269

Powinieneś użyć .NET Core zamiast .NET Framework lub Xamarin, w następujących 6 typowych scenariuszach zgodnie z dokumentacją tutaj .

1. Potrzeby różnych platform

Oczywiście, jeśli Twoim celem jest posiadanie aplikacji (sieci / usługi), która powinna być zdolna do uruchamiania na różnych platformach (Windows, Linux i MacOS), najlepszym wyborem w ekosystemie .NET jest użycie .NET Core jako środowiska wykonawczego (CoreCLR ) i biblioteki są wieloplatformowe. Innym wyborem jest skorzystanie z Mono Project.

Obie opcje są typu open source, ale .NET Core jest bezpośrednio i oficjalnie wspierany przez Microsoft i będzie wymagał dużych inwestycji.

Korzystając z platformy .NET Core na różnych platformach, najlepsze wrażenia programistyczne można uzyskać w systemie Windows dzięki oprogramowaniu Visual Studio IDE, które obsługuje wiele funkcji zwiększających wydajność, w tym zarządzanie projektami, debugowanie, kontrolę źródła, refaktoryzację, bogatą edycję, w tym Intellisense, testy i wiele innych. Ale bogate programowanie jest również obsługiwane przy użyciu Visual Studio Code na komputerach Mac, Linux i Windows, w tym Intellisense i debugowanie. Nawet redaktorzy zewnętrzni, tacy jak Sublime, Emacs, VI i więcej, działają dobrze i mogą uzyskać inteligencję edytora przy użyciu projektu Omnisharp typu open source.

2. Mikrousługi

Podczas budowania systemu zorientowanego na mikrousługi złożonego z wielu niezależnych, dynamicznie skalowalnych, stanowych lub bezpaństwowych mikrousług, wielką zaletą, którą tutaj masz, jest to, że możesz używać różnych technologii / frameworków / języków na poziomie mikrousług. Dzięki temu możesz zastosować najlepsze podejście i technologię dla poszczególnych obszarów w systemie, więc jeśli chcesz budować bardzo wydajne i skalowalne mikrousługi, powinieneś użyć .NET Core. Ostatecznie, jeśli musisz użyć dowolnej biblioteki .NET Framework, która nie jest kompatybilna z .NET Core, nie ma problemu, możesz zbudować tę mikrousługę z .NET Framework, aw przyszłości możesz być w stanie zastąpić ją .NET Rdzeń.

Platformy infrastruktury, z której można skorzystać, jest wiele. W przypadku dużych i złożonych systemów mikrousług najlepiej używać usługi Azure Service Fabric. Ale w przypadku bezstanowych mikrousług można również używać innych produktów, takich jak usługa Azure App Service lub Azure Functions.

Należy pamiętać, że od czerwca 2016 r. Nie każda technologia na platformie Azure obsługuje platformę .NET Core, ale obsługa platformy .NET Core na platformie Azure dramatycznie wzrośnie po wydaniu platformy .NET Core w wersji RTM.

3. Najlepsze i skalowalne systemy

Kiedy Twój system potrzebuje najlepszej możliwej wydajności i skalowalności, aby uzyskać najlepszą szybkość reakcji bez względu na liczbę użytkowników, to właśnie tam .NET Core i ASP.NET Core naprawdę świecą. Im więcej możesz zrobić przy tej samej ilości infrastruktury / sprzętu, tym bogatsze wrażenia będziesz mieć dla swoich użytkowników końcowych - przy niższych kosztach.

Dni poprawek wydajności prawa Moore'a dla pojedynczych procesorów już nie obowiązują; jednak musisz zrobić więcej, gdy Twój system się rozwija i potrzebujesz wyższej skalowalności i wydajności dla bardziej wymagających użytkowników, których liczba rośnie wykładniczo. Musisz w końcu uzyskać większą wydajność, optymalizować wszędzie i lepiej skalować między klastrami maszyn, maszyn wirtualnych i rdzeni procesorów. Nie chodzi tylko o zadowolenie użytkownika; może również mieć ogromny wpływ na koszt / całkowity koszt posiadania. Dlatego ważne jest, aby dążyć do wydajności i skalowalności.

Jak wspomniano, jeśli możesz wyizolować małe elementy systemu jako mikrousługi lub inne luźne powiązania, będzie lepiej, ponieważ będziesz mógł nie tylko ewoluować każdy mały kawałek / mikrousługę niezależnie i mieć lepszą długoterminową zwinność i konserwacja, ale będziesz także mógł korzystać z dowolnej innej technologii na poziomie mikrousług, jeśli to, co musisz zrobić, nie jest kompatybilne z .NET Core. I w końcu będziesz mógł go refaktoryzować i przenieść do .NET Core, jeśli to możliwe.

4. Opracowanie stylu wiersza poleceń dla komputerów Mac, Linux lub Windows.

To podejście jest opcjonalne w przypadku korzystania z .NET Core. Oczywiście możesz również korzystać z pełnego środowiska IDE programu Visual Studio. Ale jeśli jesteś programistą, który chce tworzyć przy użyciu lekkich edytorów i intensywnego korzystania z wiersza poleceń, .NET Core jest przeznaczony dla interfejsu CLI. Zapewnia proste narzędzia wiersza poleceń dostępne na wszystkich obsługiwanych platformach, umożliwiając programistom tworzenie i testowanie aplikacji przy minimalnej instalacji na programistach, laboratoriach lub maszynach produkcyjnych. Redaktorzy, tacy jak Visual Studio Code, używają tych samych narzędzi wiersza poleceń w swoich doświadczeniach programistycznych. IDE jak Visual Studio używają tych samych narzędzi CLI, ale ukrywają je za bogatym doświadczeniem IDE. Programiści mogą teraz wybrać poziom, w którym chcą wchodzić w interakcję z łańcuchem narzędzi, od interfejsu CLI do edytora i IDE.

5. Potrzebujesz obok siebie wersji .NET na poziomie aplikacji.

Jeśli chcesz móc instalować aplikacje w zależności od różnych wersji frameworku w .NET, musisz użyć .NET Core, który zapewnia 100% obok siebie, jak wyjaśniono wcześniej w tym dokumencie.

6. Aplikacje Windows. UWP .NET.

Ponadto możesz także przeczytać:

  1. Kiedy NIE powinienem używać .NET Core?
  2. Kiedy powinienem nadal używać .NET Framework 4.x zamiast .NET Core?
  3. Kiedy powinienem używać Xamarin zamiast .NET Core?
Fiona Bi
źródło
17
Dlaczego asp.net Core jest bardziej wydajny? Dlaczego lepiej jest budować mikrousług?
Juan Zamudio
4
Teraz dostępny jest także Visual Studio dla komputerów Mac. Więc jeszcze jeden pozytywny punkt w kierunku .NET Core. visualstudio.com/vs/visual-studio-mac
Husyn
8
Twoje linki są zepsute
shaneparsons
2
@JuanZamudio Wersje frameworka są warstwami monolitycznymi, każda zależna od bezpośrednio poprzedniej wersji, w łańcuchu zależności z powrotem do wersji 2.0, która całkowicie zastąpiła 1.1. W rezultacie, jeśli używasz czegokolwiek od 4.5, domyślnie polegasz na wszystkim, co kiedykolwiek wracało do 2.0. Ramy Core bardziej polegają na refaktoryzacji zależności w celu wyeliminowania zbędnego bagażu niż przepisywaniu API, które w większości, ale nie jest całkowicie niezmienione. Niektóre rzeczy również zostały znacznie uproszczone, na przykład EF Core.
Peter Wone
Dzięki za opisową odpowiedź
Tolga Kartal
171

Oto jak Microsoft to wyjaśnia:

.NET Framework, .NET Core, Xamarin

.NET Framework to „pełny” lub „tradycyjny” smak .NET dystrybuowany wraz z Windows. Użyj tego, gdy budujesz komputerową aplikację Windows lub UWP lub pracujesz ze starszą wersją ASP.NET 4.6+.

.NET Core to wieloplatformowy system .NET działający w systemach Windows, Mac i Linux. Użyj tego, gdy chcesz budować aplikacje konsolowe lub internetowe, które mogą działać na dowolnej platformie, w tym wewnątrz kontenerów Docker. Nie obejmuje to obecnie aplikacji UWP / stacjonarnych.

Xamarin służy do tworzenia aplikacji mobilnych, które można uruchamiać na urządzeniach z systemem iOS, Android lub Windows Phone.

Xamarin zwykle działa na platformie Mono , która jest wersją platformy .NET, która została stworzona z myślą o obsłudze wielu platform, zanim Microsoft zdecydował się oficjalnie przejść na platformę z platformą .NET Core. Podobnie jak Xamarin, platforma Unity działa również na Mono.


Częstym punktem zamieszania jest miejsce, w którym mieści się ASP.NET Core. ASP.NET Core może działać na platformie .NET Framework (Windows) lub .NET Core (wieloplatformowy), jak szczegółowo opisano w tej odpowiedzi: Różnica między ASP. NET Core (.NET Core) i ASP.NET Core (.NET Framework)

Nate Barbettini
źródło
3
Ilekroć ktoś mówi, że .NET Core jest wieloplatformowy, nowy programista się myli. „NET Rdzeń” wspiera UWP + ASP.NET Rdzeń tylko i ASP.NET Rdzeń jest cross-platform, UWP nie jest.
Hassan Tareq,
@HassanTareq To nie do końca poprawne. .NET Core odnosi się do środowiska wykonawczego i bibliotek, które można uruchomić w systemie Windows, Mac lub Linux. ASP.NET Core jest wieloplatformowy, ponieważ .NET Core jest wieloplatformowy.
Nate Barbettini,
Byłoby pomocne dla Greenhornsów, jeśli wspomnimy, że Chociaż .Net core (środowisko wykonawcze i biblioteki ) jest wieloplatformowy, nie możemy używać aplikacji UWP w systemie Mac / Linux. UWP nie jest wieloplatformowy, spodziewałem się, że UWP będzie wieloplatformową alternatywą WPF (Xamarin.Forms jest)
Hassan Tareq
@HassanTareq Dobra sugestia, zredagowałem swoją odpowiedź.
Nate Barbettini,
1
Xamarin Forms działa teraz na prawie wszystkim, od jednej bazy kodu. Pulpit Windows UWP, WPF, MacOS, iOS, Android i Tizen (telewizory). Domyślnie celem jest .NET Standard z implementacji Core. Dobre czasy!
Sean Anderson
35

Możesz odwoływać się w tym wierszu - Różnica między ASP.NET Core (.NET Core) i ASP.NET Core (.NET Framework)

.NET Framework, .NET Core, Xamarin

Xamarin wcale nie jest debatą. Jeśli chcesz budować aplikacje mobilne (iOS, Android i Windows Mobile) przy użyciu C #, Xamarin jest twoim jedynym wyborem.

.NET Framework obsługuje aplikacje Windows i Web. Dzisiaj możesz używać Windows Forms, WPF i UWP do tworzenia aplikacji Windows w .NET Framework. ASP.NET MVC służy do tworzenia aplikacji internetowych w .NET Framework.

.NET Core to nowa platforma open source i wieloplatformowa do tworzenia aplikacji dla wszystkich systemów operacyjnych, w tym Windows, Mac i Linux. .NET Core obsługuje tylko UWP i ASP.NET Core. UWP służy do budowania systemów Windows 10 dla aplikacji Windows i mobilnych. Program ASP.NET Core służy do tworzenia aplikacji internetowych opartych na przeglądarce.

chcesz więcej szczegółów skorzystaj z tych linków
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / standard / choose-core-framework-server

logeshpalani98
źródło
12
  1. .NET to ekosystem oparty na języku c #
  2. .NET Standard to Standard (innymi słowy specyfikacja) ekosystemu .NET .

Biblioteka .Net Core Class Library jest oparta na standardzie .Net . .NET Standard można wykonać tylko projekt biblioteki klas, który nie może być wykonany jako samodzielny i do którego powinien odnosić się inny projekt wykonywalny .NET Core lub .NET Framework. Jeśli chcesz zaimplementować bibliotekę przenośną dla .NET Framework , .Net Core i Xamarin , wybierz bibliotekę standardową .Net

  1. .NET Framework to framework oparty na .NET i obsługuje aplikacje Windows i Web

(Możesz utworzyć projekt wykonywalny (taki jak aplikacja Console lub aplikacja ASP.NET) za pomocą .NET Framework

  1. ASP.NET to technologia tworzenia aplikacji internetowych oparta na .NET Framework
  2. .NET Core to także framework oparty na .NET .

Jest to nowa platforma open source i wieloplatformowa do tworzenia aplikacji dla wszystkich systemów operacyjnych, w tym Windows, Mac i Linux.

  1. Xamarin to platforma do tworzenia wieloplatformowej aplikacji mobilnej ( iOS, Android i Windows Mobile ) przy użyciu C #

Obsługa wdrażania .NET Standard [niebieski] i minimalna opłacalna platforma dla pełnego wsparcia .NET Standard (najnowszy: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- wsparcie] )

Razib Hossain
źródło
Głosuj w dół na tabelę „Historia wersji”. To nie jest „Historia wersji” .net / standard lub core, którą odtworzyłeś. Jest to minimalna możliwa wersja platformy, której możesz użyć, jeśli chcesz dopasować określoną wersję standardową .Net. EG: jeśli chcesz obsługiwać .NET Standard 1.4 w Full .NET, najniższa wersja, której możesz użyć, to 4.6.1
shawty
W dół Głosowanie usunięte, teraz, gdy poprawnie zaktualizowałeś i udokumentowałeś swoją odpowiedź :-)
shawty
Pomyśl, że zamiast tego opracuję Apple ...
Richard Hammond,
7

.NET 5 będzie ujednoliconą wersją wszystkich wariantów .NET, które pojawią się w listopadzie 2020 r., Więc nie będzie już potrzeby wybierania między wariantami. wprowadź opis zdjęcia tutaj

yanlend
źródło
1
To kłamstwo. .NET Core nie obsługuje WPF / WinForms w systemie Linux!
Vincent
To prawda, ale inne warianty .NET też tego nie obsługiwały. Wybór wariantu .NET nie istnieje, co jest dobrą rzeczą.
yanlend
1

.NET Core to aktualna wersja .NET, z której powinieneś teraz korzystać (więcej funkcji, naprawione błędy itp.)

Xamarin to platforma, która zapewnia rozwiązania problemów mobilnych między platformami zakodowanych w języku C #, dzięki czemu nie trzeba używać Swift osobno dla systemu iOS i to samo dotyczy Androida.

Marto99
źródło
2
Powiedziałbym, że .Net Core jest tym, czego powinieneś używać, jeśli musisz działać w systemie Linux lub Linux i Windows. Ale myślę, że to samo dotyczy Mono. Z pewnością nie ma więcej funkcji. Z definicji jest to tylko „rdzeń” bitów, nie ma on żadnych bitów tylko dla systemu Windows, stąd mniej funkcji. I tylko zgaduję, ale wydaje się mało prawdopodobne, że .Net Core ma mniej błędów. .Net Framework działa na świecie od prawie dwóch dekad. Wyobrażam sobie, że w tym momencie jest dość zahartowany w walce. Ale to tylko przypuszczenie.
Jason Boyd
Z pewnością ma więcej nowych funkcji, niedawno dodali nowe klasy, które nie zostaną dodane do .NET 4.8. Przeniesiono także WPF i WinForm. W rzeczywistości wygląda na to, że .NET Core może zastąpić .NET Framework. Wydaje się też być bardziej wydajny.
asdf
0

Xamarin jest używany do aplikacji telefonicznych (zarówno na IOS / Android). .NET Core służy do projektowania aplikacji internetowych, które mogą działać zarówno na Apache, jak i IIS.

To jest różnica w dwóch zdaniach.

użytkownik10868910
źródło
Hmm .. oprócz pominięcia trzeciej opcji (.NET Framework), nie jest to do końca prawda. Rdzeń .NET może być używany na prawie wszystkim (w sieci, na komputerach, urządzeniach mobilnych, chmurze, grach, IoT itp.). .NET Framework jest przeznaczony dla systemu Windows i został całkowicie zamknięty. Mono było otwartą (wspieraną przez społeczność) wersją .NET Framework używaną przez Xamarin, która umieszczała wieloplatformowe narzędzia mobilne na mono. Xamarin zostanie ostatecznie zastąpiony, najprawdopodobniej przez Blazora (obecnie pwa, ale hybrydowe, a następnie rodzime są częścią mapy drogowej).
shox
To prawda. Xamarin jest przeznaczony do aplikacji mobilnych. Nie sądzę, że wkrótce zostanie zastąpiony. ASMX jest nadal używany w usługach sieciowych i jest zawarty w Visual 2019.
user10868910
-1

zaktualizowany w maju 2019 r

powinieneś użyć .Net Core 3.0 i późniejszych przy aktualizacji do następnej wersji .Net 5, wszystko czego potrzebujesz to tylko jedna zunifikowana platforma .Net5

Będzie tylko jeden .NET, a będziesz mógł go używać do kierowania na> Windows, Linux, macOS, iOS, Android, tvOS, watchOS i WebAssembly i więcej. https://devblogs.microsoft.com/dotnet/introducing-net-5/

szczekanie
źródło
Ta odpowiedź nie ma sensu.
Kiril1512