"Upgrade" für mich und meine Projekte (von VB.NET/.NET Framework -> C#/.NET)

  • C#
  • .NET 7–8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.

    "Upgrade" für mich und meine Projekte (von VB.NET/.NET Framework -> C#/.NET)

    Hallo zusammen.
    Ich hab heut die Überlegung gestartet, meine Projekte und somit auch mich selbst zu upgraden.
    Aktuell entwickle ich mit VB.NET und .NET Framework 4.7.2 und nutze intensivst das typisierte DataSet.

    Da ich im Zuge der - irgendwann mal - Multiplatform-Entwicklung mir sowieso mal C# aneignen möchte,
    dachte ich bietet sich mein Großprojekt an, um daraus mal eine V3 zu machen.

    Die V3 soll dann mit C# geschrieben sein - mir stellen sich jedoch folgende Fragen dazu:

    Was ist der genaue Unterschied zwischen .NET und .NET Framework? Mir kam in den Sinn eine Windows-Forms-Anwendung
    mit .NET 8 zu schreiben. Den Designer etc. kann ich ja so verwenden wie im Framework auch. Verliere ich da irgendwelche Vorteile vom Framework?

    Außerdem wollte ich mal mit Entity Framework rumspielen. Gibt's da Nachteile zum DataSet? Ich arbeite mit MySQL-Datenbanken und will die
    Queries an die DB so einfach wie möglich halten. Dank DataSet und den Helpers vom ErfinderDesRades klappt das sehr gut aktuell. Wenn ich die Tabellen samt Spalten und Relationen händisch bzw. codeseitig
    anlegen muss, dann stört mich das nicht weiter. Es muss nur jederzeit erweiterbar sein und es fliegen hin und wieder auch mal Spalten raus.

    Naja, ich bin mal auf eure Meinungen gespannt. ;)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    tragl schrieb:

    Was ist der genaue Unterschied zwischen .NET und .NET Framework?
    kenn mich auch nicht aus - das habich gegoogelt: learn.microsoft.com/de-de/dotn…n-to-choose-net-framework
    Net ist sicher cooler als FW: viele neue coole Features drin, und oller Krempel rausgeworfen.
    Aber ist so viel neues, dass der Umstieg hart wird. Zb. das Config-System ist ganz neu, da muss man entsprechend alles neu schaffen.

    Ich mag EF nicht. Weiss auch nicht, wie einfach es ist, das mit MySql kompatibel zu kriegen.
    EF hat statt typDataset typisierte ObjectContainer. Da gibts auch Designer, aber mit EF-CodeFirst wollen sie die abschaffen, oder haben? oder haben wieder eingeführt? Da wird ja ständig umgemodelt.
    Jdfs ohne EF-Designer ist der Db-Überblick eines ER-Diagramms verloren - für mich ist das Datenmodellierung mit verbundenen Augen.
    Bei uns auf Arbeit der EF-Designer zickt auch immer rum, also nach einer Db-Änderung den ObjectContext aktualisieren ist immer Zitterpartie.
    Auch die Arbeit im FormDesigner ist bei EF mühsamer.
    Bei typDataset geht das visual, bei EF musste im DesignerCode rumhacken, bevor du bei einem DGV die Spalten gestalten kannst.
    Und BindingSource.Sort/Filter funzt net.
    EFs Änderungsverfolgung - nutzen wir garnet - ich glaub auch nicht, dass die richtig funktioniert.
    Bei EF kann man doll mit LinqToSql iwelche anonymen Datentypen komponieren und abfragen - da generiert EF im Hintergrund die Queries zu.
    Leider kann man diesen anonymen Quatsch nicht geändert zurückspeichern, und im Form-Designer kannste auch nicht vernünftig dran binden.
    Und Linq2Sql hat nur einen eingeschränkten Befehls-Satz. Welche Befehle möglich sind, erfährst du aber erst zur Laufzeit - also deine Query mag kompilieren, zur Laufzeit aber Ätsch.
    Also ich fülle lieber typDataTables, und frage von denen was mit Linq2Object ab, das ist maximal mächtig und zuverlässig.
    Und EF fährt auch im Hintergrund noch Sql ab, lazy-loading. Das kann extrem unperformant sein, wenn du 200 Datensätze durchgehst, und je eine Navigations-Property aufrufst.
    Das kann man auch unterbinden, indem man am ObjectContext umfangreichen Initialisierungs-Code schreibt - eine Wissenschaft für sich.
    Und EF kann keine Datenmengen auf Platte schreiben oder laden - es hängt immer am Datenbank-Tropf.

    Jo, insgesamt weiss ich noch nicht, was EF denn nun eigentlich besser macht als typDataset. Also es kann vieles, was typDataset kann, manches eben auch nicht, und kann auch komische dolle Sachen, die ich immer nur üflüssig finde, bzw. mit denen man auch schnell auf Nase fällt.

    Ja, vlt. ein grundsätzlicher Unterschied ist, dass ein typDataset ja ein Wrapper um ein untypisiertes Dataset ist. Dadurch kann man generischen Code schreiben für Anwendungsfälle, die bei verschiedenen Tables immer mal wieder vorkommen.
    EF-ObjectContexte haben diese Basisklassen nicht - das macht das Erstellen mehrfach verwendbarer Infrastruktur tw. unmöglich.

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

    tragl schrieb:

    Was ist der genaue Unterschied zwischen .NET und .NET Framework?


    Ich habe mich damit nicht wirklich auseinander gesetzt. Aber ein paar Sachen kann ich dazu sagen.

    Wenn du auf NET umsteigst, wirst du feststellen, das einiges nicht mehr direkt drin ist. Da muss man dann Nuget Packete installieren. Ich hatte erstmal in Erfahrung bringen müssen warum kein SerialPort mehr in der Toolbox war, obwohl beim auswählen der Toolbox-Elemente SerialPort gecheckt war, fand aber wie so oft auf SO Hilfe, musste dann das System.IO.Ports Nuget Packet von MS hinzufügen. Aber das hat auch was positives. Ingesammt wird alles schlanker und ich habe den Eindruck das es auch eine etwas bessere Perforomance liefert.

    Auch einige neuere Dialoge werden verwendet. Da kann evtl. @-Franky- was zu sagen, der ist dafür der Fachmann hier, ich hab da nicht so einen überblick wie er.

    tragl schrieb:

    und nutze intensivst das typisierte DataSet.


    Als ich auf NET umsteigen wollte sah ich das was im Anhang zu sehen ist, als ich ein prepariertes DGV aufs Form werfen wollte. Ich dachte OMG, muss wieder alles neu lernen. Bin dann direkt auf WPF umgestiegen. Habs zwar nicht bereut, aber hätte ich nicht mal gemusst. Vaporized hat hier geschrieben wie man es machen muss:(Da war ich aber schon bei WPF)
    NET 6 wieder Probleme im DataSet?

    tragl schrieb:

    mir sowieso mal C# aneignen möchte,

    C# ist die überlegene Sprache wenn man VB und C# vergleicht. C# hat einige Features die es in VB nicht gibt. Für mich war der Grund des Umstiegs, das ich hauptsächlich mit Sprachen arbeite die C-Syntax haben und ich sogar immer in VB anfing ein ; ans Ende von Codezeilen zu schreiben. Auch bei der Deklaration von Variablen hab ich ständig den Typ zuerst geschrieben(C-Style) statt Dim varName as Type, das nervte irgendwann. Wenn du C# kannst, wird es dir zudem wesentlich leichter fallen, andere Sprachen mit C-Syntax zu lernen.


    Aber schon allein weil das Framework nicht mehr weiter entwickelt wird, sollte man zumindest für neue Projekte NET nutzen. Sollten kritische Sicherheitslücken im FW gefunden werden, wird MS die vermutlich noch fixen. Aber die Frage ist, wie lange die das machen werden.
    Bilder
    • Unbenannt.jpg

      28,35 kB, 293×375, 16 mal angesehen
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „DTF“ ()

    Ok,
    dass die Datenquellen fehlen ist mir auch schon aufgefallen - dann macht hier .NET Framework scheinbar ja zumindest aktuell doch noch mehr Sinn.
    Bzgl. EF muss ich mir dann mal meine Gedanken machen - da scheint das DataSet ja doch einfacher zu sein.

    Also fasse ich zusammen:
    Ich würde dann .NET Framework in der aktuellsten Version nutzen und auch beim DataSet bleiben.
    Programmiersprache/Syntax ändert sich dann von VB.NET zu C#

    Wird wohl noch ein paar Jahre laufen das Programm, bevor MS das Framework komplett killt gehe ich mal von aus.
    Moderne Forms/Designs etc. brauche ich derzeit sowieso nicht, weshalb WPF usw. erstmal nicht in Frage kommt.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup: