Ich habe meinen Kopf gesenkt, um an verschiedenen Projekten zu arbeiten, und anscheinend war Microsoft damit beschäftigt, einige große Änderungen vorzunehmen, und es verwirrt mich zum Teufel. ASP.NET Core kam zum ersten Mal auf mein Radar, als ich letztes Jahr Visual Studio 2017 installierte und ein neues Projekt erstellte. Plötzlich hatte ich die Wahl zwischen .NET Framework, .NET Standard und .NET Core. Also habe ich sie mir ein wenig angesehen und festgestellt, dass die beiden letzteren in gewisser Weise abgekürzte Versionen des vollständigen Frameworks sind. Ich habe diesen Beitrag von Scott Hanselman gelesen. ASP.NET 5 ist tot - Einführung in ASP.NET Core 1.0 und .NET Core 1.0 Ich habe auch diesen gefunden, der mich von ASP.NET Core ablenkte : Wählen Sie zwischen ASP.NET und ASP.NET Core. Mein Tipp war: "Core ist neu, Sie können das gesamte Framework weiterhin verwenden." Daher habe ich mit .NET Framework 4.6.2 und Microsoft.AspNet.Mvc 5.2.3 eine neue ASP.NET MVC-Site erstellt.
Seit ich dieses Projekt erstellt habe, habe ich einige Fehler sowohl in MVC als auch in Entity Framework gefunden, nur um festzustellen, dass die einzige Erwähnung im Web in Core zu sein scheint und dies der einzige Ort ist, an dem sie als behoben gelten.
Heute versuche ich, die Dokumentation zu System.Web.Mvc.Controller und System.Web.Mvc.JsonResult nachzuschlagen, und sie ist außer unter der Kerndokumentation verschwunden. Ich habe es schließlich graben hier , wo es sagt , dass es nicht mehr aufrecht erhalten werden?
Ich verstand so viel über Core und sagte: "Okay, warum sollte es mich interessieren? Ich werde weitermachen, was ich tue, und das noch einmal überprüfen, wenn es fertig ist." Aber jetzt scheint es, dass 4.6.2 nicht einmal mehr unterstützt wird. Kann jemand erklären, was los ist? Ist mein NET 4.6.2 / MVC 5.2.3-Projekt jetzt veraltet, bevor ich es überhaupt fertig geschrieben habe? Wenn nicht, warum wurde die Dokumentation zurückgezogen und versteckt? Ich mache mir Sorgen, dass einige meiner Abhängigkeiten möglicherweise nicht einmal für Core verfügbar oder mit Core kompatibel sind.
Antworten:
( 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 Jahre5 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!") )
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.System.Web.Mvc
als auchMicrosoft.Web.Mvc
Namespaces vorhanden waren - was verwirrend ist . Glücklicherweise war dies heute nur von kurzer Dauer und irrelevant.System.Web.dll
oder keine (jetzt älteren) IIS-Abhängigkeiten (z. B. die alte AnforderungspipelineIHttpHandler
undIHttpModule
nicht mehr vorhanden).Microsoft.AspNet
und nicht mehr lautetSystem.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.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.).
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:
System.Web.dll
). Beachten Sie, dass die gesamte ASP.NET MVC- Bibliothek jetzt veraltet ist.Alle (in chronologischer Reihenfolge):
System.Web.dll
.System.Web.dll
.System.Web.Mvc.dll
.System.Web.dll
.System.Web.Mvc.dll
.System.Web.Http.dll
.System.Web.dll
OWIN unabhängig ausgeführt werden .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.Zeitleiste und Blockdiagramm
(Ich wurde mitgerissen, als ich das gemacht habe ...)
quelle
ScriptManager
). Es ist eine riesige PITA.Diese Antwort versucht, sich nur auf ASP.NET MVC 5 und so wenig ASP.NET Core wie möglich zu konzentrieren.
Produktlebensdauer
Microsoft unterstützt dies weiterhin und es ist noch kein Ende des Lebens angekündigt.
https://www.asp.net/support
Also, wenn Sie möchten, verwenden Sie es weiter. Denken Sie daran, dass VB6- und klassische ASP-Benutzer weiterhin von Microsoft unterstützt werden.
.NET Framework 4.5.2 und höher wird weiterhin unterstützt, wenn Sie die Microsoft-Dokumentation zum Produktlebenszyklus überprüfen.
Instandhaltung
Sie müssen jedoch beachten, dass sich ASP.NET MVC 5 im Wartungsmodus befindet, da sich derzeit fast alle Entwicklungsressourcen auf ASP.NET Core befinden.
Sie bekommen,
Wenn Sie die relevanten NuGet-Pakete überwachen, sollten Sie beachten, dass Microsoft sie bereits kürzlich aktualisiert, um Sicherheitslücken usw. zu beheben.
Der Hinweis, den Sie in Microsoft Docs gesehen haben, betont tatsächlich den ersten Satz: "Wir aktualisieren diesen Inhalt nicht mehr regelmäßig." Dies ist absolut sinnvoll, da ASP.NET MVC 5 absolut stabil ist und Sie nicht mehr erwarten sollten, dass neue Materialien hinzugefügt werden.
Sie sagten: "Seit ich dieses Projekt erstellt habe, habe ich einige Fehler in MVC und Entity Framework gefunden, nur um festzustellen, dass die einzige Erwähnung im Web in Core zu sein scheint und dies der einzige Ort ist, an dem sie als behoben gelten." . "
Nun, es hängt wirklich davon ab, über welche "Bugs" Sie sprechen. Wie ich bereits sagte, werden sicherheitsrelevante Probleme immer noch behoben, aber Fehler mit Problemumgehungen oder Funktionseinschränkungen werden am seltensten behoben. Es ist ein Open-Source-Projekt. Wenn Sie also wirklich wollen, können Sie die Probleme als letztes Mittel selbst beheben.
Auf der Seite der neuen Funktionen portiert Microsoft einige Funktionen von ASP.NET Core zurück, z. B. Abhängigkeitsinjektion, neues Konfigurationssystem, um die Migration bis zu einem gewissen Grad zu vereinfachen. Aber erwarte nicht viel.
Migration
Ziehen Sie eine Migration auf ASP.NET Core in Betracht, wenn Sie können.
quelle