.NET Core gegen ASP.NET Core

Antworten:

209

Update 2020 : Beachten Sie, dass ASP.NET Core 3 und höher jetzt von .NET Core abhängt und nicht mehr unter .NET Framework verwendet werden kann. Die folgende Beschreibung bezieht sich auf ASP.NET Core 1.x-2.x. Die Ebenentrennung gilt weiterhin für ASP.NET Core 3.0, aber die ASP.NET Core-Schicht kann in Version 3.0+ nicht mehr über .NET Framework verwendet werden.

.NET Core ist eine Laufzeit. Es kann Anwendungen ausführen, die dafür erstellt wurden.

ASP.NET Core ist eine Sammlung von Bibliotheken, die ein Framework zum Erstellen von Webanwendungen bilden. ASP.NET Core-Bibliotheken können sowohl auf .NET Core als auch auf dem "Full .NET Framework" (das seit vielen Jahren mit Windows ausgeliefert wird) verwendet werden.

Der verwirrende Teil ist, dass eine Anwendung, die die Bibliotheken und Tools von ASP.NET Core verwendet, normalerweise als "ASP.NET Core-Anwendung" bezeichnet wird, was theoretisch nicht sagt, ob sie für .NET Core oder .NET Framework erstellt wurde. So eine „ASP.NET Core - Anwendung“ ist auch eine ".NET Core-Anwendung" oder eine ".NET Framework-Anwendung".

Dieses Bild zeigt die Beziehung der beteiligten Technologien (aus diesem Blog-Beitrag ) .NET-Webanwendungstechnologien

Hier können Sie sehen, dass ASP.NET Core sowohl auf .NET Framework als auch auf .NET Core aufgebaut ist, während "ASP.NET" (jetzt häufig als "klassisches ASP.NET" bezeichnet) nur .NET Framework ist.

Martin Ullrich
quelle
22
Wie nennen wir klassischen ASP? "Alter ASP"? : p
Dan Schnau
1
ASP.NET Core.NET Core RuntimeASP.NET Core runtimeASP.NET Core runtime
Also
Abhängig von der Version wird 2.1 es ein wenig abspalten, aber solange Sie die "Hosting-Bundles" auf den Servern installieren, sollte es Ihnen gut gehen. Wenn Sie für ASP.NET Core unter .NET Framework entwickeln, benötigen Sie weiterhin das Hosting-Bundle für das erforderliche IIS-Modul
Martin Ullrich
3
@ DanSchnau, wir haben "Classic ASP", "ASP.NET" AKA "Classic ASP.NET" und "ASP.NET Core", also überhaupt kein Konflikt :)
Gouda
@ LP13: Es gibt keine "ASP.NET Core Runtime", sondern nur eine Reihe von Paketen, die nicht von selbst ausgeführt werden können (ohne vorinstallierte oder als eigenständige App ausgelieferte .NET Core)
Tseng
43

ASP.NET Core mit .NET Core - Alle Abhängigkeiten sind in sich geschlossen, können die meisten NuGet-Pakete verwenden, können keine Windows-spezifischen Pakete verwenden, können unter Windows, Linux und Mac ausgeführt werden.

ASP.NET Core mit .NET Framework - Die meisten Abhängigkeiten sind in sich geschlossen, werden nur unter Windows ausgeführt, haben Zugriff auf Windows-spezifische NuGet-Pakete und benötigen die auf dem Computer installierte .NET Framework-Version.

Nathan Alard
quelle
8
Wer nennt diese Dinge? Das ist super verwirrend.
Nick
1
@ Nick: Microsoft Marketing. Sie haben eine lange Geschichte davon. Sie haben das Web noch nicht entdeckt - sie verwenden gebräuchliche Substantive für Produkte (nicht gut in einer Suchmaschinenwelt, in der spezifischere, weniger gebräuchliche Wörter besser sind, vorzugsweise eindeutige Wörter, die nicht im Wörterbuch enthalten sind).
Peter Mortensen
23

ASP.NET Core ist eine der von .NET Core unterstützten Workloads.

Aus dem .NET Core-Handbuch :

.NET Core enthält ein einziges Anwendungsmodell - Konsolen-Apps -, das für Tools, lokale Dienste und textbasierte Spiele nützlich ist. Auf .NET Core wurden zusätzliche Anwendungsmodelle erstellt, um die Funktionalität zu erweitern, z.

  • ASP.NET Core
  • Windows 10 Universal Windows Platform (UWP)
  • Xamarin.Forms
V-Andrew
quelle
Dies ist eine relevantere Antwort für mich. .Net Core für Konsolen-App, ASP.Net Core für Web-App.
Shawn Zhang
5

Das .NET Framework befindet sich in der letzten Version. Nach 4.8 wird es keinen weiteren geben. Microsoft wird mit .NET Core fortfahren. Ab diesem Zeitpunkt sollten Sie .NET Core für Ihre Projekte bevorzugen.

Sinan Bozkuş
quelle
2

Darüber hinaus möchte ich hinzufügen, dass dies jemandem helfen könnte.

In der .NET Core-Anforderungspipeline gibt es eine sogenannte Middleware-Injektion. Bei korrekter Implementierung ist dies sehr nützlich, da Anwendungsausnahmen automatisch abgefangen werden können und die Protokollierung an einem Ort viel einfacher ist, anstatt sich bei allen Methoden anzumelden.

rahul
quelle
Können Sie Ihrer Antwort einen oder mehrere Referenzen / Links hinzufügen?
Peter Mortensen