Hi,
lange her, dass ich mal einen Thread erstellt habe.
Ich stelle hier nicht konkret eine Frage, sondern bin eher an Meinungen interessiert.
Ich werde bald ein neues Projekt beginnen und muss dementsprechende Entscheidungen treffen. Viele unserer alten Projekte sind noch mit WPF umgesetzt, allerdings habe ich auch mit Avalonia mal etwas gespielt. Hier sind allerdings die Skia Libs etwas nervig die mitgeliefert werden müssen und etwas heavy sind.
Die Situation in der .NET UI Landschaft ist etwas chaotisch:
WPF ist per se am Life-Support. Das GitHub Repo hat die letzten Jahre kaum große Features bekommen, die Roadmap war lange Zeit nicht up-to-date. Das letzte Große Feature wurde ar ARM64 Support und das open-sourcen des internen WPF Test Repos . Desweiteren wurde ein Großteil des Teams zu anderen Projekten verlegt (WinUI). Sowohl finanzielle Mittel, als auch die Größe des Teams sind bei WPF schwach...es ist in Maintance Mode => on Life Support. Die letzten Commis z.B. waren nur Updates zu WinForms Dependencies. https://github.com/dotnet/wpf/commits/main
WinForms ist, trotzd des Alters, eine Technologie die wesentlich mehr von MS gestützt wird. Es ist eines der aktivsten Repos von Microsoft. Das Verhältnis von Closed/Open Issues ist wesentlich besser, und in den Commits wird wirklich an Dingen gearbeitet. WinForms wird so schnell nicht verschwinden. https://github.com/dotnet/winforms/commits/main
MAUI ist ein neues Projekt, wechles Cross Platform fokusiert und Nachfolger von Xamarin.Forms ist. Trotzdem soll es auch aktiv in der Desktop Entwicklung eingesetzt werden. Desweiteren kann man in MAUI natürlich auch Blazor Components hosten bzw. hybride Apps ansteuern. MAUI war für .NET 6 geplant, wurde allerdings delayed und befindet sich jetzt in Preview 10. Es sind noch viele Features geplant, welche aktuell fehlen, weswegen ich sagen würde, dass MAUI für die klassische Desktopentwicklung noch nicht für Production geeignet ist => https://github.com/dotnet/maui/wiki/Roadmap
Hybride Apps. Diese Projekt ist derzeit noch experimentel. TL;DR ist es eine sog. BlazorWebView Komponente. In dieser könnt ihr eine Blazor Server-Side App hosten (nutzt lokale Ressourcen). Ihr habt also ein Blazor Web Projekt, welches einfach in einem WinForms, WPF, whatever gehostet wird. Desweiteren sind native Features wohl aufrufbar.
Electron.NET ... ein ASP.NET Core oder Blazor Projekt...oder was auch immer für eine JS Frontend (React, Angular, Vue), welches am Ende electronized wird. Die Frage ist nur ob man das verwenden soll, wenn man auf Blazor setzt.
UWP ... de facto fallen gelassen imho
Das WindowsAppSDK wird sich vor allem auf WinUI3 fokusieren. Das SDK wird in 1.0 morgen released => https://portal.productboard.com/winappsdk/1-windows-app-sdk/tabs/2-planned. Wer UWP verwendet, kann dies weiter tun, WinAppSDK unterstützt UWP...langfristig wird aber jeder auf WINUI3 gehen. Das SDK setzt voraus, dass Endkunden mindestens Win10 nutzen.
WINUI 3 ist Bestandteil des WindowsAppSDK. Ist auf Win10 bzw. Win11 ausgelegt. Bekommt demnächst Unpackaged Support, was bedeutet man ist nicht mehr gezwungen die Anwendung in MSIX zu packen. WINUI3
UNO Platform => UI Platform für Single Codebase Cross Platform Applications. Kann selbst dazu wenig sagen.
Ich bin derzeit unschlüssig. Klar spielt Cross Platform immer eine entscheidende Rolle, aber wir bleiben in der Windows Welt.
Sollte man für neue Desktop Apps auf MAUI warten? WinUI 3?
Arbeite selbst seit Jahren mit WPF, und wenn alles funktioniert ist es super, aber sonst ist es recht mühsam wenn es darum geht etwas schnell zu entwickeln. Desweiteren ist WPF elend langsam.
Ich persönlich denke, dass WPF nur noch da ist, weil MS sich kein Silverlight 2.0 leisten will.
Ich bin ziemlich unschlüssig, auf was man im Moment gehen soll, da die Veränderung der UI Landschaft in .NET wohl gerade erst anfängt.