Microsoft hat jetzt .NET Core, .NET Framework und Xamarin (Mono) in seiner .NET-Familie.
Es scheint hier eine Menge Überschneidungen zu geben. Was ist der Unterschied zwischen diesen Arten von .NET? Wann sollte ich in meinem Projekt .NET Core anstelle von .NET Framework oder Xamarin verwenden?
Sie sollten .NET Core anstelle von .NET Framework oder Xamarin in den folgenden 6 typischen Szenarien gemäß der Dokumentation [hier][1] verwenden.
1. Plattformübergreifende Anforderungen
Wenn Ihr Ziel darin besteht, eine Anwendung (Web/Service) zu haben, die plattformübergreifend (Windows, Linux und MacOS) ausgeführt werden kann, ist die beste Wahl im .NET-Ökosystem die Verwendung von .NET Core, da die Laufzeitumgebung (CoreCLR) und die Bibliotheken plattformübergreifend sind. Die andere Möglichkeit ist die Verwendung des Mono-Projekts. Beide Möglichkeiten sind Open Source, aber .NET Core wird direkt und offiziell von Microsoft unterstützt und wird in Zukunft eine hohe Investition haben. Bei der plattformübergreifenden Verwendung von .NET Core ist die beste Entwicklungserfahrung unter Windows mit der Visual Studio IDE gegeben, die viele Produktivitätsfunktionen wie Projektmanagement, Debugging, Versionskontrolle, Refactoring, Rich Editing einschließlich Intellisense, Testen und vieles mehr unterstützt. Aber auch mit Visual Studio Code auf Mac, Linux und Windows wird eine umfangreiche Entwicklung unterstützt, einschließlich Intellisense und Debugging. Auch Drittanbieter-Editoren wie Sublime, Emacs, VI und mehr funktionieren gut und können mit dem Open-Source-Projekt Omnisharp Editor-Intellisense erhalten.
2. Microservices
Wenn Sie ein Microservices-orientiertes System aufbauen, das aus mehreren unabhängigen, dynamisch skalierbaren, zustandsbehafteten oder zustandslosen Microservices besteht, haben Sie den großen Vorteil, dass Sie auf Microservice-Ebene verschiedene Technologien/Frameworks/Sprachen verwenden können. Das erlaubt Ihnen, den besten Ansatz und die beste Technologie für jeden Mikrobereich in Ihrem System zu verwenden. Wenn Sie also sehr performante und skalierbare Microservices aufbauen wollen, sollten Sie .NET Core verwenden. Wenn Sie eine Bibliothek des .NET Frameworks verwenden müssen, die nicht mit .NET Core kompatibel ist, ist das kein Problem. Sie können diesen Microservice mit dem .NET Framework erstellen und in Zukunft möglicherweise durch .NET Core ersetzen. Die Infrastrukturplattform, die Sie verwenden können, ist vielfältig. Idealerweise sollten Sie für große und komplexe Microservice-Systeme Azure Service Fabric verwenden. Aber für zustandslose Microservices können Sie auch andere Produkte wie Azure App Service oder Azure Functions verwenden. Beachten Sie, dass im Juni 2016 noch nicht jede Technologie in Azure .NET Core unterstützt, aber die Unterstützung von .NET Core in Azure wird jetzt, wo .NET Core RTM ist, drastisch zunehmen.
3. Leistungsstarke und skalierbare Systeme
Wenn Ihr System die bestmögliche Leistung und Skalierbarkeit benötigt, damit Sie die beste Reaktionsfähigkeit erhalten, egal wie viele Benutzer Sie haben, dann ist das der Punkt, an dem .NET Core und ASP.NET Core wirklich glänzen. Je mehr Sie mit der gleichen Menge an Infrastruktur/Hardware tun können, desto reichhaltiger ist das Erlebnis für Ihre Endbenutzer - bei geringeren Kosten. Die Zeiten, in denen die Leistung einzelner CPUs nach dem Mooreschen Gesetz verbessert wurde, sind vorbei. Dennoch müssen Sie mehr tun, während Ihr System wächst und eine höhere Skalierbarkeit und Leistung für die immer anspruchsvolleren Benutzer benötigt, deren Zahl exponentiell steigt. Sie müssen effizienter werden, überall optimieren und letztlich besser über Cluster von Maschinen, VMs und CPU-Kernen skalieren. Das ist nicht nur eine Frage der Benutzerzufriedenheit, sondern kann auch einen großen Unterschied bei den Kosten/TCO ausmachen. 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 in der Lage sind, jedes kleine Teil/Microservice unabhängig zu entwickeln und eine bessere langfristige Agilität und Wartung zu haben, sondern auch in der Lage sind, jede andere Technologie auf Microservice-Ebene zu verwenden, wenn das, was Sie tun müssen, nicht mit .NET Core kompatibel ist. Und schließlich können Sie es refaktorisieren und auf .NET Core bringen, wenn möglich.
4. Entwicklung im Befehlszeilenstil für Mac, Linux oder Windows.
Dieser Ansatz ist optional, wenn Sie .NET Core verwenden. Sie können natürlich auch die vollständige Visual Studio IDE verwenden. Aber wenn Sie ein Entwickler sind, der mit leichtgewichtigen Editoren und starker Nutzung der Kommandozeile entwickeln möchte, ist .NET Core für CLI ausgelegt. Es bietet einfache Befehlszeilentools, die auf allen unterstützten Plattformen verfügbar sind und es Entwicklern ermöglichen, Anwendungen mit einer minimalen Installation auf Entwicklungs-, Labor- oder Produktionsrechnern zu erstellen und zu testen. Editoren wie Visual Studio Code verwenden dieselben Befehlszeilentools für ihre Entwicklungserfahrung. Und IDEs wie Visual Studio verwenden dieselben CLI-Tools, verbergen sie aber hinter einer umfangreichen IDE-Erfahrung. Entwickler können nun wählen, auf welcher Ebene sie mit der Toolkette interagieren möchten - von der CLI über den Editor bis zur IDE.
5. Benötigen Sie ein Nebeneinander von .NET-Versionen pro Anwendungsebene.
Wenn Sie in der Lage sein wollen, Anwendungen mit Abhängigkeiten von verschiedenen Versionen von .NET-Frameworks zu installieren, müssen Sie .NET Core verwenden, das 100 % Side-by-Side bietet, wie zuvor in diesem Dokument erläutert.
6. Windows 10 UWP .NET-Anwendungen.
Darüber hinaus sollten Sie vielleicht auch lesen:
Microsoft erklärt dies folgendermaßen:
.NET Framework ist die "vollständige" oder "traditionelle" Variante von .NET, die mit Windows verteilt wird. Verwenden Sie dies, wenn Sie eine Desktop-Windows- oder UWP-Anwendung erstellen oder mit älteren ASP.NET 4.6+ arbeiten.
.NET Core ist ein plattformübergreifendes .NET, das auf Windows, Mac und Linux läuft. Verwenden Sie dies, 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-Anwendungen ein.
Xamarin wird für die Entwicklung mobiler Anwendungen verwendet, die auf iOS-, Android- oder Windows Phone-Geräten ausgeführt werden können.
Xamarin läuft in der Regel auf Mono, einer Version von .NET, die für die plattformübergreifende Unterstützung entwickelt wurde, bevor Microsoft beschloss, mit .NET Core offiziell plattformübergreifend zu werden. Wie Xamarin läuft auch die Unity-Plattform auf der Grundlage von Mono.
Ein häufiger Punkt der Verwirrung ist, wo ASP.NET Core hineinpasst. ASP.NET Core kann entweder auf dem .NET Framework (Windows) oder auf .NET Core (plattformübergreifend) laufen, wie in dieser Antwort beschrieben: Unterschied zwischen ASP.NET Core (.NET Core) und ASP.NET Core (.NET Framework)
Sie können sich auf diese Zeile beziehen - https://stackoverflow.com/questions/37684508/difference-between-asp-net-core-net-core-and-asp-net-core-net-framework/37684644#37684644
Xamarin steht überhaupt nicht zur Debatte. Wenn Sie mobile (iOS, Android und Windows Mobile) Anwendungen 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 quelloffene und plattformübergreifende Framework zur Erstellung von Anwendungen für alle Betriebssysteme, einschließlich Windows, Mac und Linux. .NET Core unterstützt nur UWP und ASP.NET Core. UWP wird verwendet, um Windows 10-Ziele und mobile Anwendungen zu erstellen. ASP.NET Core wird verwendet, um browserbasierte Webanwendungen zu erstellen.
Wenn Sie weitere Details wünschen, finden Sie diese Links https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server