Was ist der Unterschied zwischen .NET Core, .NET Framework und Xamarin?

362

Microsoft hat jetzt .NET Core, .NET Framework und Xamarin (Mono) in seiner .NET-Familie.

Hier scheint es viele Überschneidungen zu geben. Was ist der Unterschied zwischen diesen .NET-Typen? Wann sollte ich in meinem Projekt .NET Core anstelle von .NET Framework oder Xamarin verwenden?

MeeChao
quelle
2
Gute Frage! Hier ist ein ergänzender Artikel über .net Framework und .net Core. pogsdotnet.blogspot.sg/2017/11/… Danke!
Allan Chua

Antworten:

269

Sie sollten .NET Core anstelle von .NET Framework oder Xamarin in den folgenden 6 typischen Szenarien gemäß der Dokumentation hier verwenden .

1. Plattformübergreifende Anforderungen

Wenn Sie eine Anwendung (Web / Service) haben möchten, die plattformübergreifend (Windows, Linux und MacOS) ausgeführt werden kann, ist es im .NET-Ökosystem am besten, .NET Core als Laufzeit (CoreCLR) zu verwenden ) und Bibliotheken sind plattformübergreifend. Die andere Möglichkeit ist die Verwendung des Mono-Projekts.

Beide Optionen sind Open Source, aber .NET Core wird direkt und offiziell von Microsoft unterstützt und wird in Zukunft eine hohe Investition erfordern.

Bei der plattformübergreifenden Verwendung von .NET Core bietet Windows die beste Entwicklungserfahrung mit der Visual Studio-IDE, die viele Produktivitätsfunktionen unterstützt, darunter Projektmanagement, Debugging, Quellcodeverwaltung, Refactoring, umfangreiche Bearbeitung einschließlich Intellisense, Testen und vieles mehr. Eine umfassende Entwicklung wird jedoch auch mit Visual Studio Code unter Mac, Linux und Windows unterstützt, einschließlich Intellisense und Debugging. Selbst Editoren von Drittanbietern wie Sublime, Emacs, VI und andere funktionieren gut und können mithilfe des Open-Source-Omnisharp-Projekts Editor Intellisense erhalten.

2. Microservices

Wenn Sie ein Microservices-orientiertes System erstellen, das aus mehreren unabhängigen, dynamisch skalierbaren, zustandsbehafteten oder zustandslosen Microservices besteht, besteht der große Vorteil darin, dass Sie verschiedene Technologien / Frameworks / Sprachen auf Microservice-Ebene verwenden können. Auf diese Weise können Sie den besten Ansatz und die beste Technologie pro Mikrobereich in Ihrem System verwenden. Wenn Sie also sehr leistungsfähige und skalierbare Mikrodienste erstellen möchten, sollten Sie .NET Core verwenden. Wenn Sie eine .NET Framework-Bibliothek verwenden müssen, die nicht mit .NET Core kompatibel ist, können Sie diesen Microservice möglicherweise mit .NET Framework erstellen. In Zukunft können Sie ihn möglicherweise durch .NET Framework ersetzen Ader.

Es gibt viele Infrastrukturplattformen, die Sie verwenden können. Idealerweise sollten Sie für große und komplexe Microservice-Systeme Azure Service Fabric verwenden. Für zustandslose Microservices können Sie jedoch auch andere Produkte wie Azure App Service oder Azure Functions verwenden.

Beachten Sie, dass ab Juni 2016 nicht jede Technologie in Azure den .NET Core unterstützt, aber die .NET Core-Unterstützung in Azure wird nach der Veröffentlichung von .NET Core RTM dramatisch zunehmen.

3. Beste performante und skalierbare Systeme

Wenn Ihr System die bestmögliche Leistung und Skalierbarkeit benötigt, damit Sie unabhängig von der Anzahl der Benutzer die bestmögliche Reaktionsfähigkeit erzielen, sind .NET Core und ASP.NET Core genau das Richtige für Sie. Je mehr Sie mit der gleichen Menge an Infrastruktur / Hardware tun können, desto umfangreicher ist die Erfahrung für Ihre Endbenutzer - zu geringeren Kosten.

Die Tage von Moores Gesetzesverbesserungen für einzelne CPUs gelten nicht mehr. Sie müssen jedoch mehr tun, während Ihr System wächst, und eine höhere Skalierbarkeit und Leistung für die anspruchsvolleren Benutzer des Alltags benötigen, deren Anzahl exponentiell wächst. Sie müssen effizienter werden, überall optimieren und letztendlich besser über Cluster von Maschinen, VMs und CPU-Kernen skalieren. Es geht nicht nur um die Zufriedenheit des Benutzers. Dies kann auch einen großen Unterschied bei den Kosten / Gesamtbetriebskosten bewirken. Aus diesem Grund ist es wichtig, Leistung und Skalierbarkeit anzustreben.

Wie bereits erwähnt, ist es besser, wenn Sie kleine Teile Ihres Systems als Microservices oder andere lose gekoppelte Ansätze isolieren können, da Sie nicht nur jedes kleine Teil / jeden kleinen Microservice unabhängig weiterentwickeln und langfristig eine bessere Leistung erzielen können Agilität und Wartung, aber Sie können auch jede andere Technologie auf Microservice-Ebene verwenden, wenn das, was Sie tun müssen, nicht mit .NET Core kompatibel ist. Und schließlich können Sie es umgestalten und wenn möglich auf .NET Core bringen.

4. Entwicklung des Befehlszeilenstils für Mac, Linux oder Windows.

Dieser Ansatz ist bei Verwendung von .NET Core optional. Natürlich können Sie auch die vollständige Visual Studio-IDE verwenden. Wenn Sie jedoch ein Entwickler sind, der mit einfachen Editoren und starker Verwendung der Befehlszeile entwickeln möchte, ist .NET Core für CLI konzipiert. Es bietet einfache Befehlszeilentools, die auf allen unterstützten Plattformen verfügbar sind und es Entwicklern ermöglichen, Anwendungen mit einer minimalen Installation auf Entwickler-, Labor- oder Produktionsmaschinen zu erstellen und zu testen. Editoren wie Visual Studio Code verwenden dieselben Befehlszeilentools für ihre Entwicklungserfahrungen. Und IDEs wie Visual Studio verwenden dieselben CLI-Tools, verbergen sie jedoch hinter einer umfassenden IDE-Erfahrung. Entwickler können jetzt die Ebene auswählen, auf der sie mit der Toolkette interagieren möchten, von der CLI über den Editor bis zur IDE.

5. Benötigen Sie nebeneinander .NET-Versionen pro Anwendungsebene.

Wenn Sie Anwendungen mit Abhängigkeiten von verschiedenen Versionen von Frameworks in .NET installieren möchten, müssen Sie .NET Core verwenden, das 100% nebeneinander bereitstellt, wie zuvor in diesem Dokument erläutert.

6. Windows 10 UWP .NET-Apps.

Darüber hinaus möchten Sie möglicherweise auch lesen:

  1. Wann sollte ich .NET Core NICHT verwenden?
  2. Wann sollte ich noch .NET Framework 4.x anstelle von .NET Core verwenden?
  3. Wann sollte ich Xamarin anstelle von .NET Core verwenden?
Fiona Bi
quelle
17
Warum ist asp.net Core leistungsfähiger? Warum ist es besser, wenn Sie Microservices erstellen?
Juan Zamudio
4
Jetzt ist auch Visual Studio für Mac verfügbar. Also noch ein positiver Punkt in Richtung .NET Core. visualstudio.com/vs/visual-studio-mac
Husyn
8
Ihre Links sind kaputt
shaneparsons
2
@JuanZamudio Versionen des Frameworks sind monolithische Schichten, die jeweils von der unmittelbar vorherigen Version abhängen, in einer Abhängigkeitskette zurück zu Version 2.0, die 1.1 vollständig ersetzt hat. Wenn Sie also etwas von 4.5 verwenden, sind Sie implizit von allem abhängig, was jemals bis 2.0 zurückreicht. Beim Core-Framework geht es mehr darum, Abhängigkeiten umzugestalten, um irrelevantes Gepäck zu eliminieren, als die API neu zu schreiben, die größtenteils, aber nicht vollständig unverändert bleibt. Einige Dinge wurden auch massiv vereinfacht, wie EF Core.
Peter Wone
Vielen Dank für die beschreibende Antwort
Tolga Kartal
171

So erklärt es Microsoft:

.NET Framework, .NET Core, Xamarin

.NET Framework ist die "vollständige" oder "traditionelle" Variante von .NET, die mit Windows vertrieben wird. Verwenden Sie diese Option, wenn Sie eine Windows- oder UWP-Desktop-App erstellen oder mit älteren ASP.NET 4.6+ arbeiten.

.NET Core ist plattformübergreifendes .NET, das unter Windows, Mac und Linux ausgeführt wird. Verwenden Sie diese Option, wenn Sie Konsolen- oder Webanwendungen erstellen möchten, die auf jeder Plattform ausgeführt werden können, auch in Docker-Containern. Dies schließt derzeit keine UWP / Desktop-Apps ein.

Xamarin wird zum Erstellen mobiler Apps verwendet, die auf iOS-, Android- oder Windows Phone-Geräten ausgeführt werden können.

Xamarin läuft normalerweise auf Mono , einer Version von .NET, die für die plattformübergreifende Unterstützung entwickelt wurde, bevor Microsoft sich offiziell für die plattformübergreifende Verwendung von .NET Core entschied. Wie Xamarin läuft auch die Unity-Plattform auf Mono.


Ein häufiger Punkt der Verwirrung ist, wo ASP.NET Core passt. ASP.NET Core kann entweder auf .NET Framework (Windows) oder .NET Core (plattformübergreifend) ausgeführt werden, wie in dieser Antwort beschrieben: Unterschied zwischen ASP. NET Core (.NET Core) und ASP.NET Core (.NET Framework)

Nate Barbettini
quelle
3
Immer wenn jemand sagt, .NET Core sei plattformübergreifend, ist ein neuer Entwickler verwirrt. '.NET Core' unterstützt nur UWP + ASP.NET Core und ASP.NET Core ist plattformübergreifend, UWP nicht.
Hassan Tareq
@ HassanTareq Das ist nicht ganz richtig. .NET Core bezieht sich auf die Laufzeit und Bibliotheken, die unter Windows, Mac oder Linux ausgeführt werden können. ASP.NET Core ist plattformübergreifend, da .NET Core plattformübergreifend ist.
Nate Barbettini
Dann wäre es für Greenhorns hilfreich, wenn Sie erwähnen, dass .Net Core ( Laufzeit und Bibliotheken ) plattformübergreifend ist, wir die UWP-App jedoch nicht unter Mac / Linux verwenden können. UWP ist nicht plattformübergreifend, ich habe erwartet, dass UWP eine plattformübergreifende Alternative zu WPF ist (Xamarin.Forms ist)
Hassan Tareq
@ HassanTareq Guter Vorschlag, ich habe meine Antwort bearbeitet.
Nate Barbettini
1
Xamarin Forms läuft jetzt auf fast allem von einer Codebasis aus. Windows UWP-Desktop, WPF-Desktop, MacOS, iOS, Android und Tizen (Fernseher). Standardmäßig wird auf .NET Standard aus der Core-Implementierung abgezielt. Gute Zeiten!
Sean Anderson
35

Sie können in dieser Zeile verweisen - Unterschied zwischen ASP.NET Core (.NET Core) und ASP.NET Core (.NET Framework)

.NET Framework, .NET Core, Xamarin

Xamarin ist überhaupt keine Debatte. Wenn Sie mobile Apps (iOS, Android und Windows Mobile) mit C # erstellen möchten, ist Xamarin Ihre einzige Wahl.

Das .NET Framework unterstützt Windows- und Webanwendungen. Heute können Sie Windows Forms, WPF und UWP verwenden, um Windows-Anwendungen in .NET Framework zu erstellen. ASP.NET MVC wird zum Erstellen von Webanwendungen in .NET Framework verwendet.

.NET Core ist das neue Open Source- und plattformübergreifende Framework zum Erstellen von Anwendungen für alle Betriebssysteme, einschließlich Windows, Mac und Linux. .NET Core unterstützt nur UWP und ASP.NET Core. UWP wird zum Erstellen von Windows 10-Zielen für Windows- und mobile Anwendungen verwendet. Mit ASP.NET Core werden browserbasierte Webanwendungen erstellt.

Weitere Informationen finden Sie unter den folgenden Links:
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / standard / Auswahl-Core-Framework-Server

logeshpalani98
quelle
12
  1. .NET ist das Ökosystem, das auf der Sprache c # basiert
  2. .NET Standard ist Standard (mit anderen Worten Spezifikation) von .NET Ecosystem.

Die .Net Core Class Library basiert auf dem .Net Standard . .NET Standard - können Sie nur Klasse-Bibliothek - Projekt machen , die keine eigenständigen ausgeführt werden kann und sollte von einem anderen referenziert werden .NET Core oder .NET Framework ausführbare project.If wollen Sie eine Bibliothek implementieren , die auf dem tragbaren ist .Net Framework , .Net Core und Xamarin wählen Sie eine .Net Standard Library

  1. .NET Framework ist ein auf .NET basierendes Framework und unterstützt Windows- und Webanwendungen

(Sie können mit .NET Framework ein ausführbares Projekt (z. B. eine Konsolenanwendung oder eine ASP.NET-Anwendung) erstellen

  1. ASP.NET ist eine Technologie zur Entwicklung von Webanwendungen, die über .NET Framework erstellt wird
  2. .NET Core ist auch ein auf .NET basierendes Framework .

Es ist das neue Open-Source- und plattformübergreifende Framework zum Erstellen von Anwendungen für alle Betriebssysteme, einschließlich Windows, Mac und Linux.

  1. Xamarin ist ein Framework zur Entwicklung einer plattformübergreifenden mobilen Anwendung ( iOS, Android und Windows Mobile ) mit C #

Implementierungsunterstützung von .NET Standard [blau] und minimal funktionsfähige Plattform für die vollständige Unterstützung von .NET Standard (aktuell: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- Unterstützung] )

Razib Hossain
quelle
Abstimmung für die Tabelle "Versionsverlauf". Es ist nicht der "Versionsverlauf" von .net / standard oder core, den Sie reproduziert haben. Dies sind die minimal nutzbaren Plattformversionen, die Sie verwenden können, wenn Sie einer bestimmten .Net-Standardversion entsprechen möchten. EG: Wenn Sie .NET Standard 1.4 unter Full .NET unterstützen möchten, ist die niedrigste Version, die Sie verwenden können, 4.6.1
shawty
Down Vote entfernt, jetzt, da Sie Ihre Antwort korrekt aktualisiert und dokumentiert haben :-)
Shawty
Ich denke, ich werde stattdessen nur auf Apple entwickeln ...
Richard Hammond
7

.NET 5 wird eine einheitliche Version aller .NET-Varianten sein, die im November 2020 verfügbar sein werden, sodass Sie nicht mehr zwischen Varianten wählen müssen. Geben Sie hier die Bildbeschreibung ein

Yanlend
quelle
1
Es ist eine Lüge. .NET Core kann WPF / WinForms unter Linux nicht unterstützen!
Vincent
Das stimmt, aber auch andere .NET-Varianten haben dies nicht unterstützt. Die Wahl für eine Variante von .NET ist weg, was eine gute Sache ist.
Yanlend
1

.NET Core ist die aktuelle Version von .NET, die Sie derzeit verwenden sollten (weitere Funktionen, behobene Fehler usw.).

Xamarin ist eine Plattform, die Lösungen für plattformübergreifende mobile Probleme bietet, die in C # codiert sind, sodass Sie Swift nicht separat für IOS verwenden müssen und dasselbe gilt für Android.

Marto99
quelle
2
Ich würde sagen, Net Core ist das, was Sie verwenden sollten, wenn Sie unter Linux oder Linux und Windows laufen müssen. Aber Sie könnten das auch für Mono tun, denke ich. Es hat sicherlich nicht mehr Funktionen. Per Definition sind es nur die "Kern" -Bits, es hat keines der Nur-Windows-Bits, daher weniger Funktionen. Ich vermute nur, aber es ist unwahrscheinlich, dass .Net Core weniger Fehler aufweist. Das .Net Framework ist seit fast zwei Jahrzehnten weltweit erhältlich. Ich würde mir vorstellen, dass es zu diesem Zeitpunkt ziemlich kampferprobt ist. Aber das ist nur eine Vermutung.
Jason Boyd
Es hat sicherlich mehr neue Funktionen, sie haben kürzlich neue Klassen hinzugefügt, die nicht zu .NET 4.8 hinzugefügt werden. Sie portierten auch WPF und WinForms. Eigentlich sieht es so aus, als könnte .NET Core .NET Framework ersetzen. Es scheint auch performanter zu sein.
Asdf
0

Xamarin wird für Telefonanwendungen (sowohl IOS als auch Android) verwendet. Der .NET Core wird zum Entwerfen von Webanwendungen verwendet, die sowohl auf Apache als auch auf IIS funktionieren können.

Das ist der Unterschied in zwei Sätzen.

user10868910
quelle
Hmm .. abgesehen davon, dass die 3. Option (.net Framework) fehlt, ist es nicht ganz richtig. .NET Core kann auf so ziemlich allem verwendet werden (Web, Desktop, Mobile, Cloud, Gaming, IoT usw.). .NET Framework ist Windows-zentriert und wurde vollständig geschlossen. Mono war die Open-Source-Version (. Community-gesteuert) von .NET Framework, die von Xamarin verwendet wurde und plattformübergreifende mobile Tools auf Mono setzte. Xamarin wird irgendwann ersetzt, höchstwahrscheinlich durch Blazor (derzeit pwa, aber Hybrid dann native sind Teil der Roadmap).
Shox
Es ist wahr. Xamarin ist für mobile Anwendungen. Ich denke nicht, dass es bald ersetzt wird. ASMX wird weiterhin für Webdienste verwendet und ist in Visual 2019 enthalten.
user10868910
-1

aktualisiert am Mai 2019

Sie sollten .Net Core 3.0 und höher verwenden und später auf die nächste Version .Net 5 aktualisieren. Sie benötigen lediglich eine einheitliche Plattform .Net5

In Zukunft wird es nur noch ein .NET geben, mit dem Sie> Windows, Linux, MacOS, iOS, Android, TVOS, WatchOS und WebAssembly und mehr als Ziel festlegen können. https://devblogs.microsoft.com/dotnet/introducing-net-5/

Yangching
quelle
Diese Antwort macht keinen Sinn.
Kiril1512