Laden...

ASP.NET Core 2.0 nur noch mit .NET Core, nicht mehr mit .NET Framework (=>MS rudert zurück)

Erstellt von Abt vor 6 Jahren Letzter Beitrag vor 5 Jahren 8.287 Views
Abt Themenstarter:in
16.806 Beiträge seit 2008
vor 6 Jahren
ASP.NET Core 2.0 nur noch mit .NET Core, nicht mehr mit .NET Framework (=>MS rudert zurück)

TLDR;
Microsoft hat zunächst entschieden ASP.NET Core 2.0 nicht mehr mit dem .NET Framework kompatibel zu machen,
Nach einem Sturm der Entrüstung auf Facebook ist Microsoft zurück gerudert und wird nun doch weiterhin auch das .NET Framework unterstützen.

In einem GitHub Issue (https://github.com/aspnet/Home/issues/2022) kam auf, dass ASP.NET Core nicht mehr zusammen mit .NET Framework funktionieren wird; Microsoft wird hier wohl einen harten Cut machen.

ASP.NET Core wird damit .NET Core-Only.
Es war damit zu rechnen, dass das irgendwann passiert - aber in meinen Augen nicht so schnell.

Nun ist es aber passiert; die Katze ist über einen "Zufall" aus dem Sack.

Microsoft geht damit den harten Weg:

  • Bibliotheken sind nur noch in Web- und Desktop kompatibel, wenn der .NET Standard-Weg gegangen wird.
  • Auf dem Desktop braucht man dazu .NET Framework 4.6.1 (und höher)
  • Im Web gilt quasi .NET Core Only
  • Das hat natürlich auch Auswirkungen auf Mono

Ich persönlich finde das - insbesondere die Kommunikation in diesem Fall - nicht dolle; man fühlt sich als Sprecher nun auch ein bisschen reingeritten, da man den Leuten immer wieder in Talks gesagt hat "Hey, funktioniert in beiden Welten!".

78 Beiträge seit 2016
vor 6 Jahren

Das ist echt mal ein trauriges Durcheinander.
Insbesondere wenn man ein Backend, das teilweise noch COM-Komponenten verwendet, mit eine Core WebAPI anreichern will.
Jetzt ärgere ich mich nicht mehr, dass wir in einem Project noch auf "classic" WebApi gesetzt haben.

Never trust a 1.X version

http://dotnet-paderborn.azurewebsites.net/

M
177 Beiträge seit 2009
vor 6 Jahren

Ich habe damals ein ASP .NET Core Projekt auf Basis von .NET Core erstellt, weil ich davon ausging, dass früher oder später .NET Core aktiv weiter entwickelt wird und irgendwann das .Net Framework "ausläuft" bzw. nur noch im maintance Mode ist.

Natürlich muss man davor abwägen, was kann man bereits mit .NET Core umsetzen und was nicht. Ein paar Einschnitte muss man mit 1.1 schon hinnehmen, ich hoffe ich setze auf das richtige Pferd.

Abt Themenstarter:in
16.806 Beiträge seit 2008
vor 6 Jahren

Dass das .NET Framework ausläuft war lange ein Gerücht; aber das ist natürlich nicht so.
Das .NET Framework deckt aktuell ein ganz anderes Spektrum als .NET Core ab. Wird sich in den nächsten Jahren auch nicht ändern.
Das Framework ist an den Support Zyklus von Windows gekoppelt; und da sind wir aktuell mindestens bei 2025.

Leider ist das wirklich nicht so gut von Microsoft rüber gekommen, sodass hier vor allem in nicht-englischen Communities schnell falsche Infos kursiert sind.
Scott Hanselman hat es dann das erste Mal mit der .NET Innovation (.NET Future Innovation: .NET Standard) anschaulich dargestellt.

ASP.NET war quasi der erste Stack, der die .NET Innovation mit dem eingeführt hat.
Im Prinzip ist aus diesem Requirement auch die neue Welt des gemeinsamen ".NET Standard" entstanden.
Ich betone auch in meinen Vorträgen zu .NET Core / .NET Standard / ASP.NET Core, dass hier ein enormes Umdenken von "Framework Version" auf "Standard Version" notwendig wird, da man ansonsten das Ziel seines Codes gar nicht kennen kann.

Wer sich mit ASP.NET beschäftigt - und das ist ja alles Open Source - da wusste man schon, dass das .NET Framework kein Dauerzustand für ASP.NET sein wird, sondern, dass das auf lange Frist schon .NET Core wird.
Dass das aber so schnell passiert; das ist schon eine Überraschung.

Denn in vielen Augen - siehe auch den GitHub Link - ist .NET Core aufgrund einiger fehlender Implementierungen noch nicht ready, sodass viele ASP.NET Core aktuell mit dem .NET Framework verwenden und sich natürlich nun vor den Kopf gestoßen fühlen.
Dazu kommt, dass Firmen natürlich auch bereits bestehende Entwicklungen haben und die Wirtschaftlichkeit durch die Wiederverwendung oft eine Rolle spielt.
Da werden leider nur selten Budgets für entsprechende Weiterentwicklung / Migration zur Verfügung gestellt.

Never trust a 1.x Version ist in meinen Augen Käse. Meine persönliche Meinung.
Denn Versionierung sagt in der Software-Welt nichts über den Inhalt oder die Roadmap aus; leider.
Gerade im JavaScript-Umfeld gibt es genug Open Source Bibliotheken, die alle über Jahre mit 0.x arbeiten.
Trotzdem erfreuen sie sich hoher Beliebtheit. Andere Produkte wechseln die Wechsel quasi im Wochentakt; heisst aber nicht, dass es dadurch besser ist.
Versionen ist leider heute oft einfach nur Marketing.

@mfe: welche Einschnitte sind es denn?
Die wichtigsten APIs sind eigentlich abgedeckt; außer im Enterprise-Umfeld, da fehlt System.Speech, System.DirectoryServices und natürlich System.Drawing.

78 Beiträge seit 2016
vor 6 Jahren

Wäre alles kein Problem, wenn SignalR und OData in ASP.NET Core fertig wären.
Bei SignalR ist ja Hoffnung.
@Abt: Hast du da Infos, wann (bzw. ob) OData kommt?

http://dotnet-paderborn.azurewebsites.net/

Abt Themenstarter:in
16.806 Beiträge seit 2008
vor 6 Jahren

SignalR ist quasi ein eigenes Produkt. Wird als Middleware in ASP.NET Core registriert (AddSignalR/UseSignalR).
Meines Wissens kommt SignalR gemeinsam mit ASP.NET Core 2; will hier aber nicht meine Hand für ins Feuer legen. Kann auch sein, dass sich das mittlerweile geändert hat.

OData verfolge ich aktuell nicht.
Aber ich hab gesehen, dass OData im GitHub issue referenziert wurde (https://github.com/OData/WebApi/issues/939).
OData 7 hat wohl den Fokus von .NET Standard 2.0; aber ich kenn hier auch kein Datum.

Zu SignalR sei noch gesagt, dass SignalR quasi eine der Gründe ist, wieso so stark auf .NET Core gesetzt wird.
In .NET Core ist der Fokus ganz klar auf Performance vor Kompatibilität.

Das .NET Framework arbeitet mit UTF-16 strings. Netzwerkverkehr arbeitet aber mit UTF-8.
Ergo ist an jeder Stelle eine Konvertierung notwendig - was gerade bei Webanwendungen, wo einfach alles über das Netzwerk läuft - Performance kostet.
Hinzu kommt häufiges Kopieren von Streams/Arrays.

Daher hat das .NET Team die Idee von Channel<T> und Span<T> gehabt: die sogenannten Pushed Based Streams.
Mittlerweile wurde das ganze in Pipelines umbenannt und befindet sich im Lab Repository von .NET.

Natürlich ist sowas nicht ohne weiteres zu implementieren, wenn ASP.NET mal mit .NET Core und mal mit .NET Framework verwendet wird. Denn die Pipelines können nicht teil des .NET Standards werden.
Es gibt also schon gute Gründe, wieso ASP.NET Core nur mit .NET Core läuft und der Austausch zu .NET Framework nur über den .NET Standard passiert.
Der Zeitpunkt ist aber... unschön. Vor allem unschön kommuniziert.

M
177 Beiträge seit 2009
vor 6 Jahren

@mfe: welche Einschnitte sind es denn?
Die wichtigsten APIs sind eigentlich abgedeckt; außer im Enterprise-Umfeld, da fehlt System.Speech, System.DirectoryServices und natürlich System.Drawing.

Im Prinzip bin ich der Auffassung, dass man .NET Core für ASP Core Net verwenden kann, wenn man keine Abhängigkeit auf, wie bereits von dir genannt, System.DirectoryServices oder EF hat.

Aufpassen muss man auch, wenn man im Namespace System.Data.Sql unterwegs ist. Da gibt es noch die eine oder andere Klasse die noch nicht "portiert" worden ist (z.b. SqlCommandBuilder )

Hat jetzt nicht unbedingt mit ASP CORE NET zu tun, aber wenn ich eine Class Library baue, schaue ich immer, ob es auch möglich ist diese mit einem .NET Standard zu "targeten".

Abt Themenstarter:in
16.806 Beiträge seit 2008
vor 6 Jahren

Naja, Du kannst ja auch EF Core verwenden, was mit .NET Core ja kompatibel ist, sofern Dir die aktuell nur sehr simplen Use Cases, die EF Core unterstützt (zB kein Group By!), ausreichen.
Ich mach eh schon länger nen Bogen um EF und nutze in Projekten Dapper oder NoSQL DBs.

78 Beiträge seit 2016
vor 6 Jahren

Bezüglich SignalR in .NET Core:
Hier ist ein sehenswerter Vortrag von der NDC London (mit Live-Coding von David Fowler höchstpersönlich):

https://www.youtube.com/watch?v=wIsync6vTfQ

http://dotnet-paderborn.azurewebsites.net/

3.003 Beiträge seit 2006
vor 6 Jahren

Evaluieren gerade, was das für uns bedeutet. Sieht derzeit so aus, als ob damit quasi alle bisherigen .net-core-Projekte nicht mehr updatefähig sind[1] und damit bis zum Ende des Supports von net core 1.1 - 12 Monate nach Erscheinen von .net core 2.0 im Herbst, also in anderthalb Jahren - ersetzt werden müssen. Damit sind wir zwei Kollegen, die wir uns für netcore stark gemacht haben, quasi auf verlorenem Posten und können einpacken. .net core dürfte die nächsten Jahre hier kein Thema mehr sein. Damit, dass die Unkenrufe der Skeptiker sich bewahrheiten und wir beide aussehen wie Dorfdeppen, könnte ich noch leben, aber die Art und Weise ist schon sehr ärgerlich.

LaTino, deprimiert
[1] haben massive Abhängigkeiten auf System.Drawing sowie etliche Drittbibliotheken, für die keine Migration in Sicht ist

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

D
152 Beiträge seit 2013
vor 6 Jahren

Wenn ich das dem Kommentar vom Artikel Build 2017: Microsoft stellt Version 2.0 der .NET-Core-Produkte vor richtig entnehme, wird die RTM Version 2.0 von ASP.NET Core auf .NET Standard 2.0 und so mit auch auf dem Framework .NET 4.x laufen. Die Einschränkung gab es wohl nur für die Preview Version.

112 Beiträge seit 2008
vor 6 Jahren

https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1/

Preview 1 Issues
This preview version of ASP.NET Core 2.0 ships with support for the .NET Core 2.0 SDK only. ** Our goal is to ship ASP.NET Core 2.0 on .NET Standard 2.0 so applications can run on .NET Core, Mono and .NET Framework.** As the team was working through the last of their issues before Build, it was uncovered that the preview of ASP.NET Core 2.0 utilized API’s that were outside of .NET Standard 2.0, preventing it from running on .NET Framework. Because of this we limited Preview 1 support .NET Core only so it would not break a developer upgrading an ASP.NET Core 1.x application to ASP.NET Core 2 preview on .NET Framework.

B
357 Beiträge seit 2010
vor 6 Jahren

Also viel Wind um Nichts?

Abt Themenstarter:in
16.806 Beiträge seit 2008
vor 6 Jahren

Was heisst viel Wind um Nichts...

Der Sturm in GitHub ist sehr hoch. Es gibt nur wenig Stimmen, die für ein Abschied von NetFX stimmen, die argumentativ agieren; dafür aber einige Trolle.

Im Endeffekt, ist in GitHub auch nachzulesen, hat Microsoft nun auf die Community gehört und will NetFX doch nicht droppen.
Ist das nun schlecht, so transparent mit Informationen und Kritik umzugehen, auch wenn die Kommunikation suboptimal war, und es mit viel Wind um Nichts zu betiteln?
Wenn der Wind nicht gewesen wäre, wäre es wohl ein Alleingang und dem Abschied von NetFX gekoppelt.

B
357 Beiträge seit 2010
vor 6 Jahren

Damit meinte ich, dass viele Newsseiten jetzt nicht die Meldung nachschieben, dass der Bruch doch nicht kommen wird, sondern lieber weiter dem Sturm der Entrüstung zuschauen, der bei der ersten Meldung losbrach. In diesen Bereichen ist es jetzt wirklich nur noch viel Wind um Nichts.

Etwas ganz anderes ist eine sachliche Diskussion auf den entsprechenden Seiten und Reporitories von MS, vor allem wenn letztere dabei auch zuhören und darauf eingehen. Ein sehr wünschenswertes Verhalten, das ich Seitens Microsoft enorm begrüße. Überhaupt scheint man bei MS seit ein paar Jahren auch deutlich mehr auf die Community einzugehen, siehe z.B. die teils starke Kritik an einigen Funktionen der XBox One, die dann eine teils größere Überarbeitung nach sich gezogen hat.

Mir fehlt also einfach an vielen Stellen im Netz gerade der Hinweis, dass die Leute wieder aufhören können, vor Wut an der Decke zu kreisen, weil die Faktenlage sich geändert hat.

6.911 Beiträge seit 2009
vor 5 Jahren

Hallo,

mit ASP.NET Core 3.0 gibt es einen neuen Versuch: Discussion: ASP.NET Core 3.0 will only run on .NET Core

Ich sehe das als logischen Schritt und vermeidet im Framework-Code von ASP.NET Core auch etliche Klimmzüge um .NET Full unterstützen zu können.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"