Ich habe meinen Kopf gesenkt, um an verschiedenen Projekten zu arbeiten, und anscheinend hat Microsoft einige große Änderungen vorgenommen, und es ist verdammt verwirrend für mich. ASP.NET Core kam zum ersten Mal auf mein Radar, als ich letztes Jahr Visual Studio 2017 installierte und ein neues Projekt erstellte. Dabei hatte ich plötzlich die Wahl zwischen .NET Framework, .NET Standard und .NET Core. Also habe ich ein wenig in sie hineingeschaut und festgestellt, dass es sich bei den beiden letztgenannten in gewisser Weise um abgekürzte Versionen des vollständigen Frameworks handelt. 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. Ich habe auch dies gefunden, was mich von ASP.NET Core ablenkte: Wählen Sie zwischen ASP.NET und ASP.NET Core . Mein Tipp war: "Core ist neu, es ist in Ordnung, weiterhin das gesamte Framework zu 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 festgestellt, dass sowohl in MVC als auch in Entity Framework scheinbar einige Fehler aufgetreten sind, und dass die einzige Erwähnung im Web in Core zu suchen ist.
Heute versuche ich, die Dokumentation zu System.Web.Mvc.Controller und System.Web.Mvc.JsonResult nachzuschlagen. Die Dokumentation ist nur in der Kerndokumentation enthalten. Ich habe es endlich ausgegraben hier wo steht, dass es nicht mehr gewartet wird?
Ich verstand so viel über Core und sagte: "Okay, warum sollte es mich interessieren? Ich werde weitermachen, was ich tue, und das nachprü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 mit dem Schreiben fertig bin? Wenn nicht, warum wurde die Dokumentation zurückgezogen und versteckt? Ich mache mir Sorgen, dass einige meiner Abhängigkeiten möglicherweise nicht für Core verfügbar oder mit Core kompatibel sind.
( Diese Antwort wird regelmäßig aktualisiert, wenn eine neue .NET-Ankündigung erfolgt. Sie wurde mit Details zu ASP.NET Core 3.0, .NET 3 und .NET 5 aktualisiert. )
Microsoft braucht eine gute Ohrfeige für das Ausmaß der Verwirrung in den letzten 3 Jahren über .NET Core/DNX, ASP.NET Core, .NET Standard, .NET 5 und den Rest.
(Und ich sage, dass als ehemaliger FTE SE in DevDiv ... ("Hallo von Gebäude 16!"))
System.Web.Http
), Die nicht viel mit ASP.NET MVC (System.Web.Mvc
) Gemeinsam hatten. Der Versuch, einen ASP.NET-Web-API-Dienst mit einer ASP.NET-MVC-Webanwendung in demselben Projekt zu kombinieren, ist eine schwierige Aufgabe.System.Web.dll
Oder irgendwelchen (jetzt vorhandenen) IIS Abhängigkeiten (z. B. die alte Anforderungspipeline IHttpHandler
und IHttpModule
existiert nicht mehr). Microsoft.AspNet
Und nicht System.Web
Ist. 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" dashotBranding von Microsoft für die aktuelle Generation von .NET-Plattformen ist, die mit .NET Core arbeiten (d. H. Sie haben keine Windows-Abhängigkeiten und sind daher portabel). (Genau wie Microsoft in den 90er Jahren "Active" auf Dinge angewendet hat, die COM oder ActiveX verwendeten, z. B. Active Desktop, Active Channels, ActiMates, Active Directory, ActiveSync usw.). - Außerdem fehlt Entity Framework Core Entity Framework 6 immer noch eine Menge Funktionen. Dies liegt daran, dass es sich im Grunde genommen um ein Neuschreiben handelt - aber irgendwann wird es die Parität erreichen.
Da derzeit viele .NET-Laufzeiten und BCLs verfügbar sind (.NET Framework, .NET Core, UWP, Xamarin (das Mono verwendet), Unity und andere), hat Microsoft .NET Standard eingeführt, bei dem es sich im Grunde um einen Neustart des Portable handelt Klassenbibliothekskonzept: Visual Studio-Projekte zielen auf eine bekannte Teilmenge allgemeiner Funktionen statt auf eine bestimmte Implementierung. (Ich wünschte nur, sie würden die Versionsnummerierung bei 4 beginnen, um mit .NET Framework übereinzustimmen, anstatt bei 1.0
Zu beginnen, da ich mich deswegen erneut Gedanken über 2001 gemacht hätte.) - aber der wichtige Teil ist, dass ASP.NET Core 1 und ASP.NET Core 2 .NET-Standard anstelle von .NET Core als Ziel verwendet wird - was bedeutet, dass ASP.NET Core über .NET ausgeführt wird Framework unter Windows zusätzlich zur Ausführung auf .NET Core.
Ich stelle fest, dass alle früheren plattformübergreifenden .NET-Kompatibilitätstechniken veraltet sind (einschließlich der Ausrichtung auf Compact Framework-Subsets, Portable Class Libraries und sogar "Shared Projects" in Visual Studio), da sie für andere Editionen von .NET gedacht waren, die keine B. .NET Compact Framework, XNA, Silverlight und die Teilmenge von Windows Phone 7.
Im Mai 2019 Microsoft kündigte ".NET 5" an . Kurz gesagt, das .NET Framework wird durch .NET Core ersetzt (speziell: Die nächste Version von .NET Core nach .NET Core 3.0 wird .NET 5 heißen). Diese Ankündigung betrifft ASP.NET Core überhaupt nicht, mit Ausnahme der Tatsache, dass .NET 5 ASP.NET Core 3.0 Anwendungen, die darauf ausgeführt werden, vollständig unterstützt. (ASP.NET Core 4 wird dann wahrscheinlich trotzdem veröffentlicht)
System.Web.dll
). Die Plattform ASP.NET MVC ist jetzt veraltet.System.Web.dll
.System.Web.dll
.System.Web.Mvc.dll
.System.Web.dll
.System.Web.Mvc.dll
.System.Web.Http.dll
.System.Web.dll
Unter OWIN laufen.(Ich wurde davon mitgerissen, dies zu machen ...)
In dieser Antwort wird versucht, sich nur auf ASP.NET MVC 5 und möglichst wenig ASP.NET Core zu konzentrieren.
Produktlebenszyklus
Microsoft unterstützt dies weiterhin, und es ist noch kein Ende des Lebens angekündigt.
Framework/Product Retirement
ASP.NET MVC 4 1. Juli 2019
ASP.NET MVC 5
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.
Wartung
Sie müssen jedoch beachten, dass sich ASP.NET MVC 5 im Wartungsmodus befindet, da sich die Entwicklungsressourcen derzeit fast ausschließlich in ASP.NET Core befinden.
Sie bekommen,
Wenn Sie die relevanten NuGet-Pakete überwachen, sollten Sie beachten, dass Microsoft diese auch vor kurzem aktualisiert, um Sicherheitslücken usw. zu beseitigen.
In dem Hinweis, den Sie von Microsoft Docs erhalten haben, wird der erste Satz betont: "Wir aktualisieren diesen Inhalt nicht mehr regelmäßig." Das ist absolut sinnvoll, da ASP.NET MVC 5 absolut stabil ist und Sie nicht mehr damit rechnen sollten, dass neue Materialien hinzugefügt werden.
Sie sagten: "Seit der Erstellung dieses Projekts habe ich festgestellt, dass sowohl in MVC als auch in Entity Framework scheinbar einige Fehler aufgetreten sind, und dass die einzige Erwähnung im Web in Core zu erfolgen scheint. Dies ist der einzige Ort, an dem sie als behoben eingestuft werden . "
Nun, es hängt wirklich davon ab, von welchen "Fehlern" Sie sprechen. Wie ich bereits sagte, werden sicherheitsrelevante Probleme immer noch behoben, aber es ist am unwahrscheinlichsten, dass Fehler mit Problemumgehungen oder Funktionseinschränkungen behoben werden. Es ist ein Open-Source-Projekt. Wenn Sie also wirklich wollen, können Sie die Probleme als letztes Mittel selbst beheben.
Was die neuen Funktionen betrifft, so exportiert Microsoft einige Funktionen von ASP.NET Core zurück, z. B. die Abhängigkeitsinjektion und das neue Konfigurationssystem, um die Migration bis zu einem gewissen Grad zu vereinfachen. Aber erwarte nicht viel.
Migration
Ziehen Sie in Betracht, nach Möglichkeit auf ASP.NET Core zu migrieren.