Themen für .NET Core/ASP.NET Core Tutorial/Einstieg/Q&A

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Themen für .NET Core/ASP.NET Core Tutorial/Einstieg/Q&A

    Hey Leute,

    ich wollte mich in meinem Urlaub mal daran Setzen sowas wie nen Einstieg in die neue Welt von .NET Core bzw. ASP.NET Core zu schreiben.
    Da jedoch inzwischen .NET Core und .NET FX sich recht ähnlich sind, und grundlegende Tutorials bald wie Sand am Meer da sein werden, dachte ich mir, ich Sammle lieber Themen, die euch brennend Interessieren und beantworte die dann entweder hier nach und nach, oder aber gesammelt in einem neuen Thema, mit einem Roten Faden.

    Ein kurzer Hinweis noch, wenn ich über ASP.NET Core rede, dann rede ich leider nur von der Erstellung von WebAPIs, nicht von ganzen Webseiten.
    Ebenso bin ich auch noch nicht in EntityFramework (Core) bewandert.

    Ansonsten sind alle Fragen zum Thema .NET Core erlaubt, die euch schon immer interessiert haben, egal ob ihr bereits mit .NET Core gearbeitet habt, oder bisher noch nie damit in Berührung gekommen seid.

    EaranMaleasi schrieb:


    Ansonsten sind alle Fragen zum Thema .NET Core erlaubt

    Sehr schöne Idee - danke!
    Ich finde .NET Core faszinierend, aber Microsofts Framework-Politik ist etwas verwirrend ;( .
    Schau mal bitte hier rein: LINK. Verschwindet .NET Core in knapp einem Jahr wieder und alles ist umsonst oder verstehe ich das falsch?


    Net Core ist einfach ein doofer Name für Microsoft und deswegen wird mit NET 5 einfach weiter gemacht. Dies ist aber dann eigentlich das Net Core.

    @EaranMaleasi danke für das Angebot. Ich arbeite sehr sehr viel mit .Net Core zurzeit auf der Arbeit und Privat um z.b. unsere Warenwirtschaft zu erweitern mit kleinen Tools auf dem Server.
    Nun ist es so das z.b. der httpclient je nach Betriebssystem ein eigenständiges verhalten an den Tag legt auf der version 3.1

    Wenn ich z.b. auf Windows einen WebRequest absetzte Async get bekomme ich keinen Fehler ( bei über 5 millionen Anfragen keine Fehler)
    Mache ich das gleiche auf Linux (debian 9 / debian 10) bekomme ich alle 3-4 Anfragen eine "unexpected TaskCanceledException"
    obwohl das absolut nicht sein kann. Kann das sein das .Net Core einfach noch nicht ausgereift genug ist?

    Ich meine ich habe mich kaputt gesucht warum da ne Exception fliegt... doch dann auf Windows nichts keine Exception es läuft alles super.
    Hast du ne Planung was das angeht?
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    @xChRoNiKx Das Problem mit dem HttpClient kann ich nicht nachvollziehen, die Frage ist wie du den Client benutzt.

    In früheren Versionen gab es mal massive Probleme, wenn du immer einen neuen "Client" pro Request erstellst (zb. using-Statment), weswegen ich seit dem nur noch eine Instanz erstelle und die für alle Requests benutze.
    Ich hätte da ne Frage

    Da ja nun .Net Core auch für WinForms und WPF Anwendungen zur Verfügung steht und .Net Core ja sooo schnell sein soll - gibt es speziell für WPF und WinForms performancetests wo man sehen kann was es an Vorteile bringt und in welchem Bereich? Ich habe dazu nichts sinnvolles gefunden, wobei ich aber auch sagen muss das mein Englisch nicht so toll ist.

    Oder hat jemand vieleicht sogar schon erfahrung mit der Performance?

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @wolfi_bayern ja, Blazor wird interessant. Ist aber wieder was eigenes da es die neue Form von "Single Site Applications" wird. Aber ist nocht (lange) nicht fertig und im Moment auch keineswegs skalierbar. Schon bei etwas mehr Zugriffen zwingt es den Server in die Knie da jedes DOM für die dauer der Sitzung im Ram des Servers gehalten wird. Aber ich bin gespannt wie es hier weitergeht da es für .Net und Desktopentwickler ein super einstieg wäre.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @simpelSoft wie @slice bereits erwähnte, ist das lediglich eine Namensänderung. .NET Core wird einfach zu .NET.

    Das ganze stammt daher, dass ursprünglich .NET Core wohl eher als, wie der Name es vermuten lässt, der absolute "Kern" von .NET darstellen sollte, der dann dafür aber Cross-Plattform fähig ist. Gleichzeitig dazu entstand ja auch .NET Standard, was Cross-Plattform Libraries ermöglicht und z.B. in Xamarin.Forms seit seiner Entstehung rege Anwendung findet, da die vorherige Lösung via Portable Class Libraries(PCL) seeehr viele Ecken und Kanten hatte.

    Die beiden neuen Projekttypen fanden in der Community enormen Anklang, und war dann auch bereit an allen Ecken und Enden mitzuhelfen, da sämtliche Bestandteile von .NET Core, vom Compiler bis zum Hello-world Template, Open-Source sind. Dadurch sind wir nun bei .NET Core 3.2 und .NET Standard 2.1 die inzwischen das alte .NET Framework 4.8, soweit mir bekannt, komplett abdecken, und sogar neue Klassen eingeführt haben.
    Deswegen dann auch nächstes Jahr der Wechsel vom Namen .NET Core zu .NET, denn das alte .NET Framework wird, abgesehen von Sicherheitspatches, und neueren TLS Versionen, nicht mehr großartig weiterentwickelt.

    Edit:
    Ich hatte völlig vergessen, dass .NET Core ursprünglich den Namen .NET 5.0 trug, das jedoch dann später aufgrund der Verwechslungsgefahr, und der wesentlich reduzierten API Abdeckung gegenüber dem eigentlichen .NET nicht wirklich tragbar war.


    Und da komme ich nun zu @Nofear23m was die neuen Klassen bzw. APIs angeht.
    Die höhere Performance wird erreicht, indem man näher am eigentlichen Speicher arbeitet bzw. Heap allocations versucht zu verhindern. Das wird hauptsächlich mit den beiden neuen
    "Collections"
    Memory<T> und Span<T> die direkt einen Bereich im Arbeitsspeicher abbilden.
    Seit .NET Core 2.1 / .NET Standard 2.1 sind diese beiden Typen in .NET Implementiert und beschleunigen entweder durch das benutzen neuer Überladungen oder versteckt im Hintergrund viele Bereiche. Da wären z.B. String-Operationen, alles was mit Streams zu tun hat, egal ob aus dem Netzwerk, von der Platte, oder direkt aus dem Speicher. Mehr dazu kannst du auch hier nachlesen. Das Deutsch dort scheint sogar mal akzeptabel zu sein

    Edit:
    Das einzige was ich an direkten Performance-Tests zwischen .NET FX und .NET Core finden konnte, war dieses hier. Es handelt sich hierbei um ein Vergleich zwischen .NET 4.7 und .NET Core 2.0 in Bezug auf Operationen mit Collections. Die Performancesteigerungen beliefen sich hierbei auf 20-50%.

    Edit Edit:
    @xChRoNiKx hier ein Artikel zu dem was @slice angesprochen hat:
    aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „EaranMaleasi“ ()

    @EaranMaleasi Ha, das ist sogar der Artikel den ich vor Jahren gelesen und es daraufhin ausprobiert hatte :D
    Dankw für die tollen Infos, ich schau mir das mal genauer an.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nun habe ich testweise in einer VM VS2019 installiert (sonst nur die 2017er Version) und wollte ein Winforms .NET Core Projekt mit C# erstellen.
    Gibt es da keinen Designer oder hab ich etwas falsch gemacht?

    PS: schöne Weihnachten für Euch :)

    Edit: ach hier stehts ja, der ist wohl noch nicht fertig: devblogs.microsoft.com/dotnet/…al-studio-16-5-preview-1/

    Hallo

    Ja, aber WPF gibts schon den Designer.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hat schon Jemand von Euch ein .NET 4.7.x Winforms Projekt zu .NET Core 3.1 portiert?
    Ich finde nur sehr umständliche Anleitungen.

    Da ja auch in der aktuellen VS2019 6.5 Preview 2 die Hälfte der Controls für Winforms fehlt, wird es wohl nur umständlich per Script gehen?
    Wäre für ein bisschen Aufklärung dankbar.

    Und wenn das Projekt dann portiert ist, muss ich ja wohl oder übel die Core 3.1 Desktop Runtime mit über 50MB ausliefern - das ist heftig ;( .

    simpelSoft schrieb:

    muss ich ja wohl oder übel die Core 3.1 Desktop Runtime mit über 50MB ausliefern
    Das kommt darauf an. In deinem Veröffentlichungsprofil kannst du entsprechend festlegen, ob du die App "Eigenständig", oder "Frameworkabhängig" ausliefern möchtest. Selbstständig liefert hierbei die Runtime mit, während Frameworkabhängig davon ausgeht, dass die entsprechende Runtime, oder eine höhere Patch-Version bereits auf dem Rechner installiert ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()

    simpelSoft schrieb:

    Hat schon Jemand von Euch ein .NET 4.7.x Winforms Projekt zu .NET Core 3.1 portiert?

    Ja, erst letzte Woche ein größeres Projekt auf .Net core migiert. Mit größerem Projekt meine ich eine Projektmappe mit ~30 Projekten.

    Eines kann ich dazu sagen, es macht keinen Spass. Migriere am besten nur wenn du musst. In meinem Fall ist das Projekt noch in der Entwicklung und ich will immer die neueste EF Core Version nutzen weshalb ich sowieso irgendwann migrieren müsste.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @simpelSoft Und noch was für nach der Portierung (falls du dich dazu entscheidest).
    Wenn du komplett auf .NET Core 3.1 und .NET Standard 2.1 setzt, gibt es eine weitere Option im Veröffentlichungsprofil, die dir gefallen dürfte:
    "Nicht verwendete Assemblys kürzen" : Das entfernt sämtliche dlls, egal ob aus Packages, oder aus der Runtime, die von deiner Anwendung nicht benötigt werden (Achtung bei Reflection). Es ist jedoch bisher ein Vorschaufeature, und scheint bereits mit .NET Standard 2.0 nicht mehr zu funktionieren. Zumindest habe ich es damit bisher nicht zum laufen gebracht.

    EaranMaleasi schrieb:

    Das entfernt sämtliche dlls, egal ob aus Packages, oder aus der Runtime, die von deiner Anwendung nicht benötigt werden (Achtung bei Reflection).

    UI, müsste ich mal probieren wie es da aussieht wenn man vom XAML aus auf teile Zugreift wie z.b. bei Themes welche in DLLs eingebettet sind. :huh:
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Da es hier kein Hilfreich gibt bedanke ich mich hiermit für den Link. gt zu wissen, muss ich mal probieren.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##