( Diese Antwort wird regelmäßig aktualisiert, wenn eine neue .NET-Ankündigung erfolgt, und sie wurde mit Details zu ASP.NET Core 3.0, .NET 3 und .NET 5 aktualisiert. )
Microsoft braucht eine gute Ohrfeige für die Verwirrung in der Vergangenheit 3 Jahre 5 Jahre über .NET Core / DNX, ASP.NET Core, .NET Standard, .NET 5 und den Rest.
(und ich sage das als ehemalige FTE SE in DevDiv ... ("Hallo vom Gebäude 16!") )
- ASP.NET alias "System.Web" ist jetzt tot. WebForms ist tot (Hurra!)
- ASP.NET MVC, das 2008 gestartet wurde, wurde auf ASP.NET aufgebaut, umging jedoch den größten Teil der WebForms-Infrastruktur.
- ASP.NET MVC verfügt über eine eigene Versionierung, die von ASP.NET und ASP.NET Web API (und ASP.NET Core ) getrennt ist. Sie haben eine Verknüpfung zur Dokumentation von ASP.NET MVC 5 hergestellt. Dies ist nicht dasselbe wie bei ASP.NET 5 .
- Die 2012 gestartete ASP.NET-Web-API ist ein Geschwister von ASP.NET MVC , da sie ebenfalls auf ASP.NET aufbaut, jedoch über eine eigene Klassenbibliothek (
System.Web.Http
) verfügt, die nicht viel mit ASP.NET MVC gemeinsam hat ( System.Web.Mvc
). Der Versuch, einen ASP.NET-Web-API-Dienst mit einer ASP.NET MVC-Webanwendung im selben Projekt zu kombinieren, ist eine schmerzhafte Übung.
- ASP.NET MVC 5 wurde 2014 als Update für ASP.NET MVC 4 gestartet . Es hat nichts mit ASP.NET 5 zu tun .
- ASP.NET MVC 6 wurde nie veröffentlicht. Es wurde in ASP.NET 5 integriert, das dann zu ASP.NET Core wurde . Ziel war es, ASP.NET MVC und ASP.NET Web API in einer einzigen Plattform zu kombinieren.
- ASP.NET Core wurde 2016 als verbessertes Design von ASP.NET MVC 5 gestartet, jedoch ohne die Abhängigkeiten von
System.Web.dll
oder keine (jetzt älteren) IIS-Abhängigkeiten (z. B. die alte Anforderungspipeline IHttpHandler
und IHttpModule
nicht mehr vorhanden).
- Beachten Sie, dass der Stammnamespace der Klassenbibliothek von ASP.NET Core jetzt
Microsoft.AspNet
und nicht mehr lautet System.Web
. Dies war eine Quelle der Verwirrung für mich. Dies bedeutet, dass das Aktualisieren von Projekten von ASP.NET MVC und ASP.NET WebAPI auf ASP.NET Core nicht trivial ist, obwohl die grundlegende Architektur von Controllern und Middleware identisch ist.
- .NET Core ist eine neue Version von CLR und BCL, die explizit portabel ist und unter Windows, Linux und macOS ausgeführt wird.
- .NET - Core 1.0 und .NET Core 2.0 ‚s Basisklassenbibliotheken wurden anämisch betrachtet im Vergleich zum Vollfett .NET Framework , die Windows-exklusiv ist.
- Mit .NET Core 3.0 und dem Open-Sourcing von WinForms, WPF und anderen Komponenten von .NET Framework wird .NET Core jetzt als Ersatz für .NET Framework in Windows für die Entwicklung neuer Anwendungen bereitgestellt.
- .NET 5 wird nach der Veröffentlichung von .NET Core 3 der neue Name von .NET Core sein (.NET 5 wird voraussichtlich Ende 2020 vorliegen).
- .NET 5 hat absolut nichts mit ASP.NET 5.0 oder ASP.NET MVC 5 zu tun .
- Es gibt weder .NET Core 4 noch .NET Framework 5.0 .
- " ASP.NET Core für .NET 5 " scheint der endgültige Name für die erste Version von ASP.NET Core zu sein, die speziell auf .NET 5 ausgerichtet ist .
Ich stelle fest, dass "Core" das Hot Branding von Microsoft für die aktuelle Generation von .NET-Plattformen ist, die mit .NET Core arbeiten (dh sie haben keine Windows-Abhängigkeiten und sind daher portabel). (Genau wie Microsoft in den 1990er Jahren "Active" auf Dinge geklebt hat, wenn sie COM oder ActiveX verwendeten, z. B. Active Desktop, Active Channels, ActiMates, Active Directory, ActiveSync usw.).
- zusätzlich Entity Framework - Core noch viel Funktionalität von Entity Framework 6 fehlt, ist dies , weil es ein Umschreiben ist, im Grunde genommen - aber es wird schließlich die Parität zu erreichen.
Da derzeit viele .NET-Laufzeiten und BCLs verfügbar sind (.NET Framework, .NET Core, UWP, Xamarin (mit Mono), Unity und andere), hat Microsoft .NET Standard eingeführt, bei dem es sich im Grunde um einen Neustart des Konzepts der Portable Class Library handelt: Dabei zielen Visual Studio-Projekte auf eine bekannte Teilmenge allgemeiner Funktionen anstatt auf eine bestimmte Implementierung. (Ich wünschte nur, sie würden die Versionsnummerierung von 4 beginnen, um mit .NET Framework übereinzustimmen, anstatt bei zu beginnen, 1.0
da ich dann wieder über 2001 nachdenken musste.) - aber der wichtige Teil ist, dass ASP.NET Core 1 und ASP.NET Kern 2 Ziel .NET Standard anstelle von .NET Core - Dies bedeutet, dass ASP.NET Core unter Windows zusätzlich zu .NET Core auch auf .NET Framework ausgeführt wird.
Ich stelle fest, dass alle früheren plattformübergreifenden .NET-Kompatibilitätstechniken veraltet sind (einschließlich der Ausrichtung auf Compact Framework-Teilmengen, tragbare Klassenbibliotheken und sogar "freigegebene Projekte" in Visual Studio), da sie für andere Editionen von .NET gedacht waren, die nicht länger existieren, wie z. B. .NET Compact Framework, XNA, Silverlight und die Teilmenge von Windows Phone 7.
Im Mai 2019 kündigte Microsoft ".NET 5" an . Kurz gesagt, .NET Framework wird durch .NET Core ersetzt , und die nächste Version von .NET Core nach .NET Core 3.0 heißt .NET 5 ). Diese Ankündigung betrifft ASP.NET Core überhaupt nicht, außer der Tatsache, dass .NET 5 ASP.NET Core 3.0- Anwendungen, die darauf ausgeführt werden, vollständig unterstützt .
Während des Covid-Themas im Sommer 2020 hat Microsoft .NET 5 und ASP.NET Core fertiggestellt. Ab Oktober 2020 haben NuGet der ASP.NET Core - Paket Versionen von 3.1.x bis 5.0.0 sprangen - so sieht es aus , als ob die nächste große Version von ASP.NET - Core versioniert werden , 5.x.x
welche seine Veröffentlichung schlägt vor , kann benannt werden " ASP. NET Core 5 ", obwohl in jüngsten Microsoft-Blog-Artikeln vorgeschlagen wird, dass der Name" ASP.NET Core für .NET 5 "lautet - obwohl dieser gesamte Thread aus der Verwirrung über" ASP.NET MVC 5 "und" ASP.NET "erstellt wurde 5 "Ich bin sicher, dass die Bezeichnung" ASP.NET Core 5 "oder" ASP.NET Core für .NET 5 " absolut nicht verwirrend sein wird , nein, Sir-ee-bob!
In Summe:
- ASP.NET MVC 5 :
- ASP.NET MVC 5 war ein kurzlebiger Nachfolger von ASP.NET MVC 4 .
- Es wurde zusammen mit ASP.NET Web API 2 veröffentlicht veröffentlicht.
- Es lief tatsächlich auf ASP.NET 4 (dh .NET 4.x-Version von
System.Web.dll
). Beachten Sie, dass die gesamte ASP.NET MVC- Bibliothek jetzt veraltet ist.
- ASP.NET 5 wurde EOL-fähig und in ASP.NET Core umbenannt und enthält die Funktionalität von "ASP.NET MVC 5".
- ASP.NET Core 1 und ASP.NET Core 2 können entweder auf .NET Core (plattformübergreifend) oder .NET Framework (Windows) ausgeführt werden, da es auf .NET Standard abzielt.
- ASP.NET Core 3 läuft jetzt nur unter .NET Core 3.0 .
- ASP.NET Core 4 existiert nicht und hat es nie getan.
- ASP.NET Core 5 existiert (Stand August 2020), sein offizieller Name scheint jedoch "ASP.NET Core für .NET 5" zu sein und läuft nur unter .NET 5 .
Alle (in chronologischer Reihenfolge):
- ASP.NET 1 - 2001. Enthaltene WebForms . Lief unter .NET Framework 1.0 und 1.1.
System.Web.dll
.
- ASP.NET 2.0 - 2005. Enthaltene WebForms . Lief unter .NET Framework 2.0.
System.Web.dll
.
- ASP.NET MVC 1 und ASP.NET MVC 2 - 2008-2009. Lief auf ASP.NET 2.0.
System.Web.Mvc.dll
.
- ASP.NET 4.0 - 2010. Enthaltene WebForms . Lief unter .NET Framework 4.0. Es gab kein ASP.NET 3.0 .
System.Web.dll
.
- ASP.NET MVC 3 und ASP.NET MVC 4 - 2010-2013. Lief auf ASP.NET 4.0.
System.Web.Mvc.dll
.
- ASP.NET Web Api 1 - 2012. Lief auf ASP.NET 4.0 .
System.Web.Http.dll
.
- ASP.NET MVC 5 - 2013. Nur ein weiteres Update für ASP.NET MVC . Lief auf ASP.NET 4.0 , konnte aber auch ohne
System.Web.dll
OWIN unabhängig ausgeführt werden .
- ASP.NET Web API 2 - 2013. Geschwister zu ASP.NET MVC 5 . Könnte auch ohne ASP.NET 4.0 unter OWIN ausgeführt werden.
- ASP.NET MVC 6 - 2014-2015. Abgebrochen nach Erreichen des Release Candidate-Status und Neustart als ASP.NET Core MVC 1.0 im Jahr 2016, der MVC- und Web-API-Komponente von ASP.NET Core 1 .
- ASP.NET 5 - 2014 Haupt Neustart von ASP.NET hier beschrieben . Zu den wichtigsten Änderungen gehörten das Zusammenführen von MVC, Webseiten und Web-API sowie das Entfernen von WebForms . ASP.NET 5 erreichte den Release Candidate-Status, wurde dann jedoch in ASP.NET Core umbenannt . Es gab noch nie ein ASP.NET 6 .
- ASP.NET Core 1 - 2016. Läuft entweder unter .NET Framework 4.5 oder .NET Core 1.0 .
- .NET Core - 2016. Tragbare und minimale .NET-Laufzeit- und Klassenbibliothek.
- .NET Standard - 2017. Eine Möglichkeit für Programme, auf einen gemeinsamen Satz von Funktionen abzuzielen, die in allen .NET-Implementierungen (.NET Framework 4.5 und höher, .NET Core 2.0 und höher, Xamarin usw.) vorhanden sind.
- ASP.NET Core 2 - 2017-2018: Wo wir heute sind. Läuft unter .NET Framework 4.6.1 oder .NET Core 2.0 . (Ab Ende 2018 gibt es jetzt ASP.NET Core 2.1).
- ASP.NET Core 3 - Ende Oktober 2018 kündigte Microsoft an, dass ASP.NET Core 3.0 jetzt nur auf dem kommenden .NET Core 3.0 ausgeführt werden kann (daher wird es nicht mehr auf .NET Framework 4.7.x ausgeführt). Dies ist ein kontroverser Schritt, da es jetzt keinen Upgrade-Pfad von ASP.NET Core 2.x zu ASP.NET Core 3.x für Anwendungen gibt, die unter .NET Framework 4.7.x ausgeführt werden, da Abhängigkeiten nicht unterstützt werden .NET Core noch, was bedeutet, dass es wahrscheinlich keinen .NET Standard 3.0 geben wird.
- .NET 5 - Mai 2019: Microsoft kündigte die nächste Version von .NET Core an, nachdem .NET Core 3.1 weder ".NET Core 4.0" noch ".NET Core 5.0" heißen würde, sondern zur Versionsnummer 5.0 springen und den "Core" fallen lassen würde "Branding, daher" .NET 5.0 ".
- ASP.NET Core 3.0 unter .NET 5 - In der Ankündigung von .NET 5 im Mai 2019 Microsoft außerdem an, dass ASP.NET Core 3.0-Anwendungen unter .NET 5 ausgeführt werden. Derzeit ist unklar, ob ASP.NET Core 2.x-Anwendungen verfügbar sind kann unter .NET 5 unverändert ausgeführt werden.
- ASP.NET Core vNext unter .NET 5 - August 2020: Mit der bevorstehenden Veröffentlichung von .NET 5 hat Microsoft die Versionsnummern der NuGet-Pakete für ASP.NET Core auf erhöht
5.0.0
. Microsoft hat diese neue Version von ASP.NET Core noch nicht offiziell als "ASP.NET Core 5" bezeichnet, aber ich sehe dies als eine ausgemachte Sache an.
- ASP.NET Core für .NET 5 Ein neuerer Blog-Artikel vom September 2020 legt nahe, dass Microsoft die nächste Version von ASP.NET Core als " ASP.NET Core für .NET 5 " bezeichnet (ja, das ist zumindest ein Mund voll es ist nicht so vieldeutig wie frühere Namen).
Zeitleiste und Blockdiagramm
(Ich wurde mitgerissen, als ich das gemacht habe ...)