Unterschied zwischen ASP.NET Core (.NET Core) und ASP.NET Core (.NET Framework)

78

Was ist der Unterschied zwischen ASP.NET Core Web (.NET Core) und ASP.NET Core Web (.NET Framework)?

und bietet .NET Framework eine ähnliche Leistung wie .NET Core?

Justin Homes
quelle
Ich kann hier bei der Arbeit nicht auf den Link zu meinen Firewall-Richtlinien zugreifen. Der Unterschied besteht jedoch darin, dass .NET Core plattformübergreifend kompatibel ist und kein .NET Framework verwendet. Die .NET Framework-Projekte verwenden offensichtlich .NET Framework, daher muss das Framework auf dem Server installiert werden.
Clint B

Antworten:

96

Dies kann zunächst verwirrend sein, aber es ist wichtig, sich daran zu erinnern: Letztendlich ist "ASP.NET Core" nur eine Reihe von NuGet-Paketen, die in Ihrem Projekt installiert werden können.

ASP.NET Core unter .NET Core ist plattformübergreifender ASP.NET Core. Es kann unter Windows, Mac und Linux (einschließlich Docker) ausgeführt werden. Auf dem Server muss .NET Core nicht installiert sein - die Abhängigkeiten können mit der Anwendung gebündelt werden.

ASP.NET Core unter .NET Framework ist ASP.NET Core unter "Voll" oder "Desktop" .NET Framework (z. B. .NET Framework 4.6.2). Diese Anwendungen können nur unter Windows ausgeführt werden, aber alles andere an ASP.NET Core verhält sich genauso.

Gemäß den von Ihnen verknüpften Benchmarks weisen beide eine höhere Leistung als ASP.NET 4.6 auf, obwohl .NET Core derzeit die höchste ist:


ASP.NET 4.6: <50.000 Anforderungen / Sek

ASP.NET Core (CLR): 400.000 Anforderungen / Sek

ASP.NET Core (.NET Core, Linux): 900.000 Anforderungen / Sek

ASP.NET Core (.NET Core, Windows):> 1,1 m erforderlich / s

Diese Benchmarks sind jedoch etwas älter (Februar 2016) und spiegeln den Code vor RTM wider. Ich wäre nicht überrascht, wenn sie sich seitdem verbessert hätten.

Nate Barbettini
quelle
5
Was ist der Zweck von zwei zugrunde liegenden Frameworks, gegen die Sie bauen können? Es ist eine weitere Wahl, die Sie treffen müssen, um zum .net Core oder zum vollständigen .net Framework zu gelangen, um mit asp.net Core zu arbeiten. ist das Ziel, dass .net Core noch nicht alle erforderlichen Funktionen zum Erstellen einer Web-App hat, sodass ein vollständiges .net-Framework erforderlich ist
Justin Homes
5
@JustinHomes Anwendungen und Pakete müssen auf .NET Core portiert werden, und manchmal ist dies abhängig von den verwendeten APIs schwierig. Die Option ist vorhanden, sodass Sie ASP.NET Core heute auf "vollem" .NET verwenden und dann in Zukunft auf .NET Core portieren können, wenn Sie die plattformübergreifende Funktion nutzen möchten.
Nate Barbettini
3
@NateBarbettini Habe bereits eine Frage aufgeworfen. stackoverflow.com/q/38237576/2056869
JBA
2
@NateBarbettini Funktionieren alle Nuget-Pakete, wenn ASP.NET Core unter .NET Framework (CLR) verwendet wird, oder treten Kompatibilitätsprobleme aufgrund von ASP.NET Core auf?
Jonas
2
@ JonasAxelsson Ja, wenn die Pakete die CLR unterstützen (dh netstandard1.1oder höher net451oder höher).
Nate Barbettini
12

ASP.NET - Core mit .NetCore ist eine Cross-Plattform (es unter Windows, Linux oder anderen Plattformen laufen kann), High-Performance , Open-Source - Framework für die Entwicklung moderne, Cloud-basierte, Internet-Anwendungen verbunden. Es kann auf IIS, Nginx, Apache, Docker oder Selbsthost in Ihrem eigenen Prozess gehostet werden.

ASP.NET Core wird vollständig als NuGet-Pakete geliefert . Auf diese Weise können Sie Ihre App so optimieren, dass nur die erforderlichen NuGet-Pakete enthalten sind. Tatsächlich benötigen ASP.NET Core 2.x-Apps für .NET Core nur ein einziges NuGet-Paket. Zu den Vorteilen einer kleineren App-Oberfläche gehören eine strengere Sicherheit, ein geringerer Service und eine verbesserte Leistung.

Es ist nicht erforderlich, das .NET-Framework zu installieren, um den asp.net-Kern mit der .net-Kernanwendung auszuführen. Eine ASP.NET Core-Anwendung mit .net Core ist eine Konsolenanwendung, die in ihrer Main-Methode einen Webserver erstellt. Es verwendet den Kestrel-Webserver, um die Anwendung auszuführen.

Wir können auch Editoren wie Visual Studio Code, Atom verwenden, um die Anwendung auszuführen.

Aspx, WPF, WCF und WebServices werden nicht wie jetzt unterstützt. Es unterstützt die integrierte Abhängigkeitsinjektion. Verwendet coreclr, die Laufzeit in asp.net core mit .net core.

Asp.Core mit .Net-Framework .Net-Framework hingegen begann viel vor 2005 und fügte immer wieder neue Funktionen hinzu, wodurch es ein etwas komplexeres Framework und schwerer wurde. Es ist nicht plattformübergreifend. Es unterstützt Aspx, WPF, WCF und WebServices

Ausführungsplan für das Net Framework Geben Sie hier die Bildbeschreibung ein

.Net Core Exceution Plan Geben Sie hier die Bildbeschreibung ein

Nayas Subramanian
quelle
3

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
Dies ist eine Kopie einer anderen Antwort