Alternative zu WinForms (Junior Laufbahn mit Zukunft)?

Das Ergebnis basiert auf 3 Abstimmungen

Anderes (Alternative erwähnen und begründen) 67%
Asp.net blazor 33%
Winforms 0%
WPF 0%

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Anderes (Alternative erwähnen und begründen)

WinForms ist nicht nur veraltet, sondern tot, schon seit vielen Jahren ;)
Ursprünglich wollten sie es nicht mal für .NET Core supporten, haben dann aber dem Druck aus der Community nachgegeben.
Gleiches gilt auch für WPF, auch das ist tot.

Wenn es dir ums Lernen geht, unabhängig von der Langlebigkeit, dann würde ich WPF wählen. Das ist zwar alt, aber es hat Maßstäbe gesetzt, die bis heute noch in vielen Frameworks verwendet werden.

Wenn es dir um Zukunftssicherheit geht, hast Du mehrere Möglichkeiten, je nach Ziel-Technologie.

Aus der Community kenne ich z.B. Avalonia, das war als ein WPF-Klon gedacht und es ähnelt sich auch, aber hinkt in einigen Dingen weit hinter WPF her. Wer aber kleine/einfache Projekt für mehrere Geräte entwickeln will, für den kann Avalonia eine super Wahl sein.

Microsoft entwickelt selber einen quasi WPF-Nachfolger (eigentlich Xamarin-Nachfolger), der hat sicher auch Potential, allerdings auch noch einige Probleme. Ich hoffe, dass Microsoft da etwas mehr Manpower rein steckt, dann könnte es in ein paar Jahren noch richtig interessant sein.

Wirklich die Zukunft sehe ich aber im Web mit Blazor. Auch das hat seine Problemchen, aber die sind weit überschaubarer, als bei MAUI.
In der Web-Entwicklung ist am meisten Bewegung, Du musst allerdings mit HTML/CSS und ein bisschen JavaScript klar kommen. Und Du musst damit leben können, dass Browser gerne mal komische Eigenarten haben - aber die gibt's eigentlich immer. Auf der anderen Seite gibt's auch Frameworks wie Bootstrap, die viel Arbeit abnehmen - im Web ist man ja nicht nur auf .NET beschränkt, die Web-Community ist gigantisch.

Außerdem kann ich Blazor auf Android, iOS, Windows, Linux, im Browser, auf einem Fernseher, etc. zum Laufen bringen. Wenn Du eine gemeinsame Code-Basis dafür haben willst, wird das etwas kompliziert (weil alle Projekt-Typen einen anderen Projekt-Aufbau haben), aber es geht, Blazor bleibt Blazor.

MAUI unterstützt z.B. ein Blazor-Frontend (und das funktioniert auch ziemlich gut), dadurch läuft Blazor auf Mobile- und Desktop-Geräten und auch als Microsoft-Store-App.

Dann gibt's noch Electron, eine alternative Desktop-Lösung für Web-Anwendungen.
Oder Photino.NET, ein kleine, dem Gefühl nach noch nicht ganz ausgereifte, aber sehr viel leichtgewichtigere Alternative zu Electron. Probleme hatte ich damit noch keine, nur eine Unschönheit, dass sie die Logs direkt in die Konsole schreiben.

Oder Du bleibst bei der klassischen Web-Anwendung, Browser gibt's ja auch überall.

Ich arbeite aktuell an einem Projekt, des MAUI (für Mobile), Photino.NET (Desktop) und klassisch Web (Browser/Backend) mit einer gemeinsamen Blazor-Codebasis nutzt. Bedenke aber, dass Blazor-Support auch Nachteile hat, so muss z.B. eine Browser-Engine installiert sein, Electron liefert sie selber mit, Photino.NET sucht eine installierte Engine.

Bedenke aber auch, dass das alles nach viel klingt, aber noch nicht wirklich viel ist. Allein ASP.NET Core und die damit in Verbindung stehenden Extensions-Frameworks hängen Blazor und die UI-Frameworks ab. Wenn Du dann noch Authentifizierung (oder noch schlimmer: Single Sign-on) oder Datenbanken haben willst, kommt nochmal ein großer Berg an Komplexität oben drauf.

Also versuch nicht, direkt nach den Sternen zu greifen. Vielleicht kannst Du damit umgehen (wenn ja, wüsste ich einen Arbeitgeber für dich ;) ), aber wahrscheinlicher ist, dass Du damit ziemlich überfordert sein wirst. Also mach lieber mit WPF weiter, bis die Grundlagen stabil sitzen (auch sowas wie LINQ oder async, damit haben viele Kollegen ihre Probleme), dann kannst Du weiter schauen. Es gibt ja auch noch andere sehr zentrale Frameworks, wie z.B. Entity Framework Core oder diverse Logging-Frameworks, oder Konzepte wie Configuration oder Dependency Injection. Das sind alles Dinge, die brauchst Du in der Web-Entwicklung, da ist es sehr hilfreich, wenn Du damit schon mal im kleineren/einfacheren Rahmen gearbeitet hast.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
JrDev 
Fragesteller
 27.04.2024, 22:36

Vielen Dank erstmal für die ausführliche Antwort.

Mir geht's darum nach meiner Ausbildung nun eine Stelle zu finden aber alle sind abgeneigt gegen Berufseinsteiger/Junioren und verlangen 2 Jahre Berufserfahrung mindestens dann Erfahrung in 2 Programmiersprachen dann soll man auch noch fullstack sein Reisebereitschaft zeigen und und und.

Aus dem Grund hab ich mir jetzt 2-3 Monate seit dem erfolgreichen Bestehen der Ausbildung HTML CSS js angeschaut da wie du sagtest man im Web irgendwo immer in Kontakt damit kommt war es für mich wichtig damit mal gearbeitet zu haben.

Dann arbeite ich mich mal in ASP.net core mit blazor ein.

Erneut vielen Dank hatte während der Ausbildung schon keinen der mir geholfen hat bei Fragen da ist so eine ausführliche Antwort für mich sehr viel wert :)

0
Palladin007  28.04.2024, 01:30
@JrDev

Klingt nach einem vernünftigen, aber herausfordernden Plan ;)

Steck aber nicht zu viel Zeit in JavaScript, das braucht man zwar immer mal wieder, aber wirklich wichtig wird es eigentlich nur in Ausnahmefällen.

HTML ist eigentlich ganz simpel, konzentriere dich lieber auf CSS, das ist das eigentliche Problem im Web-Design, ich streite mich damit auch ständig herum :D

Und bevor Du mit ASP.NET Core anfängst, lies dich in folgende Frameworks ein:

Microsoft.Extensions.Logging
Naja, Logging halt ^^

Microsoft.Extensions.Configuration
Ganz simpel: Konfiguration, allerdings mit einem raffinierten Konzept, was z.B. Live- und Test-Umgebungen einfach unterscheidbar macht.

Microsoft.Extensions.Options ist mehr ein Konzept, als ein Framework und eigentlich ziemlich simpel, aber es vereinfacht die "Verteilung" von Konfigurationen im Projekt und viele Frameworks nutzen das Konzept.

Microsoft.Extensions.DependencyInjection ist DependencyInjection-Container, da solltest Du dich vorher in DependencyInjection im Allgemeinen einlesen. Das zu Verstehen fällt vielen schwer, aber dieses Konzept ist absolut zentral für alles andere. Solange Du DependencyInjection nicht begriffen hast, wirst Du ständig gegen irgendwelche Steine laufen.

Microsoft.Extensions.Hosting vereint das alles, ist sozusagen eine Art Application-Framework, was dir alles, was man so an Infrastruktur braucht, aus einem Guss liefert. Die Art und Weise, wie ASP.NET Core in der Program.cs "aufgebaut" wird, ist dieses Hosting-Konzept.

Wenn Du über das alles einen Überblick hast, wirst Du viel in ASP.NET Core wiedererkennen. Ob Du das dir einzeln anschaust, oder mit ASP.NET Core alles aufeinmal, das musst Du entscheiden. Es gibt dazu noch einiges mehr, aber auf diesen Frameworks (und den Konzepten) baut alles andere auf.

Viele davon ist auf den ersten Blick nur Frameworks, sie sind aber auch Abstraktionen und viele andere Frameworks (auch aus der Community) implementieren diese Abstraktionen, das macht sie so extrem wichtig. So ist das z.B. der einzige Grund, warum ich mit praktisch keinem Aufwand einfach Serilog als Logging-Framework nutzen kann, anstelle vom eingebauten Logging, der Autofac als DependencyInjection-Container.

Und dann gibt's noch Entity Framework Core und natürlich Blazor, für beides solltest Du dir auch einiges an Zeit nehmen. Beides wirkt auf den ersten Blick sehr einfach und ein bisschen wie Magie, aber hinter der Fassade sind die Möglichkeiten gewaltig.

Damit müsstest Du dann eigentlich alles haben, was man so für moderne Projekte braucht. Es gibt noch mehr, besonders aus der Community, aber das sind alles Dinge, die nicht mehr essenziell sind und man kann sich zur Not recht schnell einarbeiten.

Bedenke aber, dass sich zwischen den .NET Versionen immer wieder einiges ändert, das macht es ggf. etwas schwerer. Z.B. hat sich zwischen .NET 7 und 8 der Grund-Aufbau der Blazor-Projektvorlage geändert. Es ist abwärtskompatibel, aber alte Quellen passen ggf. nicht mehr zu dem, was Du bei einem neuen Projekt siehst.

Und frag bei technischen Fragen nicht hier, hier gibt's nur wenige, die wirklich wissen, was sie tun. mycsharp.de halte ich für eine bessere Anlaufstelle, aber dort wird erwartet, dass Du zumindest die Doke gelesen hast ^^

alle sind abgeneigt gegen Berufseinsteiger/Junioren und verlangen 2 Jahre Berufserfahrung

Das liegt daran, dass Berufseinsteiger erst einmal ein großer Kostenfaktor sind, immerhin kostest Du mehr Geld, als Du wert bist, produzierst mehr Bugs, die hinterher noch mehr Geld kosten und Du brauchst mehr Hilfe von Kollegen. Das ist normal, aber eine Firma will natürlich wissen, ob Du diese Investition auch wert bist.

Wenn Du aber glaubhaft zeigen kannst, dass sie dich aufbauen können, sieht das wieder anders aus. Dein Plan, dir das alles im Voraus anzueignen, ist schon mal sehr löblich und seltener, als Du glaubst.
Noch seltener ist, wenn jemand sich auch für die Hintergründe und Details interessiert und verstehen will, wie das alles unter der Haube funktioniert. Das mag auf den ersten Blick unnötig klingen, bei den ersten "komischen" Fehlern wird dieses Wissen aber extrem wertvoll. Das ist z.B. mein Haupt-"Verkaufsargument" :D

Wenn Du das also durch ziehst, Erfolg dabei hast und diese gewisse Begeisterung am Beruf vermitteln kannst, solltest Du eigentlich keine Probleme bei der Job-Suche haben - ich würde dich einladen ;)

Erfahrung in 2 Programmiersprachen

Zwei? Welche zwei denn?
Gut, wenn die Firma mit z.B. Angular arbeitet, brauchst Du natürlich zwingend JavaScript oder TypeScript, aber mit Blazor reicht eigentlich C# aus. Und HTML/CSS sind keine Programmiersprachen.
Vielleicht meinen sie SQL, aber dank Entity Framework Core braucht man das nur noch selten, aber es lohnt sich, die Grundlagen verstanden zu haben.

1
JrDev 
Fragesteller
 28.04.2024, 10:05
@Palladin007

Vielen Dank für die sehr ausführliche Antwort und die ganzen Tipps. Ich setze mich gleich an den Rechner und schreibe die Punkte die du aufgezählt hast noch auf meine To-Do Liste :D auch wenn die mittlerweile einen erschlägt und das gefühlt von "du bist zu schlecht und wirst es nie schaffen" vermittelt :D

Naja hab die Ausbildung eigenständig geschafft da schaff ich es auch mich in Frameworks einzuarbeiten.

Bezüglich den zwei Sprachen war es allgemein gesagt meistens sowas wie c# Java und im Frontend Javascript vue.js node.js wo ich dann wieder denke node.js ist doch für Backend dafür willst du doch Java oder c# wieso unter Frontend wieder node.js aufzählen :D

Auch schon gesehen sehe gute Kenntnisse in Java gute Kenntnisse in Python und schön wäre es wenn sie mit ASP.net arbeiten können.

In den letzten 4 Monaten so einige verrückte Stellenbeschreibungen gesehen :D

0
Palladin007  28.04.2024, 12:43
@JrDev

Ich habe die Erfahrung gemacht, dass Stellenausschreibungen alles andere als aussagekräftig sind :D Sie enthalten Hinweise darauf, wie Du am Ende arbeiten wirst, aber mehr auch nicht. Ruf einfach an und frag nach, dann hast Du es aus erster Hand und Du kannst dich in der Bewerbung auf das Gespräch beziehen.

Vielleicht geht es in deinen Beispielen nicht darum, dass Du z.B. C# *und* Java können musst, sondern C# *oder* Java? Der Gedanke dahinter ist, dass ein guter Java-Entwickler sich leichter in C# einarbeiten kann und die Firma möchte alle Nicht-C#-Entwickler nicht direkt in der Stellenausschreibung ablehnen.

das gefühlt von "du bist zu schlecht und wirst es nie schaffen" vermittelt

Das war nicht meine Absicht, aber Du willst ja direkt am Ende anfangen, natürlich ist das dann viel ;)

Aber deshalb ja auch die Extensions-Frameworks, damit es eben nicht erschlägt. Die sind alleine und für sich einfacher, während ASP.NET Core das alles in Summe braucht.

1
Anderes (Alternative erwähnen und begründen)

Ich würde Flutter Mal ausprobieren an deiner Stelle. Damit kannst du Desktop und sogar Mobile-Apps schreiben und musst nicht abhängig von Microsoft bleiben. Damit tut man sich nicht zwingend was Gutes.

Flutter soll auch im Web gehen - aber als ich das zuletzt versucht habe, lief es nicht sehr performant im Browser. Ist aber auch schon lang her, damals war das Feature noch frisch.

Woher ich das weiß:Berufserfahrung