Forum Discussion
What platform/technology/framework to use. I am lost. :-(
- Dec 31, 2021
NickJ911 https://platform.uno/ may be a good fit for you; it is open source, production ready today (MAUI is not) and proven with real apps. It leverages .NET 6, C# 10 and Xamarin (not Forms but the stuff in .NET), uses one of the best designed .NET UI frameworks: WinUI 3, which you use directly to build for Windows and then UNO has ports of WinUI 3 for Android, iOS and more on top of Xamarin.
UNO also lets you target the browser via webassembly with the same UI framework and source code (so not a mix of 2 frameworks like Blazor and MAUI)
On top of that, if you like C# and would prefer declarative C# to XAML for your UI, you can create your UI (and so your entire app) in C# 10 with https://github.com/VincentH-Net/CSharpForMarkup for WinUI and Uno Platform (disclosure: I am the author of that library - let me know if you need help using C# Markup)I have about 20 years C# .NET experience, last 8 years in Xamarin, and specialize in the developer experience of .NET UI frameworks.
NickJ911 - .Net 6 for server, REST or gRPC are both good. UI for Windows: WPF. UI for Android: Flutter. Alternative: PWA.
Windows desktop (WPF): MAUI is not done, and my bet it's not fleshed out properly until some time in 2024 at the earliest. It takes time for things to not only be "production ready" but to be "production ready, really, really, seriously". Xamarin Forms is dead waiting for resurrection as MAUI. UWP died a long time ago but expect resurrection as MAUI. Windows Forms is not recommended for anything but the smallest of applications. So, WPF it is, and there it'll stay for a good while yet. UNO is also an idea (even for Android) but I'd be weary of doing anything on a third-party thing right now as MAUI is slowly emerging from the belly of MS.
Android (Flutter): It's fantastic. Really. Amazing. Seriously. Don't worry about it not being C#, it's close enough, even more so now with .Net 6 and sound null-safety for C# and Dart both. Also, someone might ask you to go for a iPhone app in the future. I also believe Flutter for the Desktop will be usable before MAUI, but that remains to be seen.
Alternative (PWA): If your UI is mostly talking to a server, not needing too much from the local machine (and PWAs can still do a lot on your local machine), Then you not only have one single code for your desktop, web and mobile. React/Typrscript (recommended) or Blazor (not quite there yet IMnsHO)
Conclusion: Don't be afraid to use multiple technologies for writing an application. Good developers should be comfortable in multiple languages/frameworks. At least those that are all so similar these days. TypeScript, C#, Dart, Java ... they are all "the same".