Forum Discussion
What platform/technology/framework to use. I am lost. :-(
Hi everyone,
I want to develop a new application that will run on Windows (desktop app) and android.
I have about 30y of experience in development and the last 15 in C#/VS/.NET.
At work we work with Winforms/WPF and .NET 4.8.
For my personal new product I would like to start with all the latest and greatest but it's hard to find what to use. First of all I upgraded to VS 2022.
I've been reading about .NET5/6, Xamarin, Xamarin Forms, .NET MAUI, Win UI, Winforms, WPF, UWP, Blazor, .NET Core, .NET Standard,.... but it's a mess to get an overview of what would fit best.
The project would have 1 or 2 core assembly's with the logic and then a UI for Windows and one for Android.
So before I start I would like to get an idea of what you would use.
Thanks!
NickJ911 Uno Platform 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 C# Markup 2 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.
- VincentH_NETCopper Contributor
NickJ911 Uno Platform 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 C# Markup 2 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.
- KrisgolkoBrass ContributorI believe .NET MAUI is intended to unify and replace technologies like WPF. UWP or Xamarin. It's in preview at the moment, but it only matters if you want to release in the next four months.
Note that Nick is currently using WPF, MAUI is not that different.
- andychiareCopper ContributorNot sure I can help you with your specific problem, but if you are looking for a quick overview of the .NET world, I wrote a couple of articles on this:
- What is .NET? An Overview of the Platform (https://auth0.com/blog/what-is-dotnet-platform-overview/)
- .NET Core vs .NET Framework vs .NET Standard: A Guided Tour (https://auth0.com/blog/navigating-dotnet-maze/)
I hope they can help you at least to get a clear high-level overview - vdandradeCopper Contributor
Use .Net 6 WebApi for the API
Use Blazor for the UI
Use MAUI/Xamarin to use the Blazor App in Android - NickJ911Copper ContributorThank you all very much for the replies; it's sure a good read to find my way through all of it.
Will have a look at UNO and see what that brings up.
Best regards - tabinnorwayCopper Contributor
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".
- AdvancebookWriterCopper Contributor
NickJ911 Openness to differing technology options does fit initial study but selecting a technology path for desktop development must be done, as you know of course. The problem is what I know to be a great distortion of UWP merits being cast as demerits, in a powerful rumor mill, with very many developers and designers shying hard away from UWP, unwisely and unfoundedly.
Production App submission with UWP's full and tried capability of robust feature sets would allow you the best latitude and design possibilities in building-while-conceiving a desktop productivity application, with such fully stable toolbox controls as to present many design options for Page layout and visual structure. Plus, if the Android implementation can be handled while preferring a differing interface via simpler Xamarin Forms anyway, it would be much better for desktop app development to define the later Android apps desired similarities and differences, by first optimizing the process to better the Desktop App outcomes, with existing tried and true UWP standards. UWP for some odd reason often is mentioned as if possessing terrible nature to it, but in truth it is excellent, and ironed out very well in entire process from solution/project creation all the way to submission to the store. Developing first and exclusively for the desktop/laptop app expression, is a way of fleshing out ideas I prefer, leaving mobile implementations more rudimentary, and while desiring a differing code base for the mobiles, and that not difficult to code as C# logic should not be anything new, but same or lesser than the desktop code behind.
Rushing away from UWP presently is to lose the best tool we have for desktop Windows 11 power, in my opinion, and to my coding experience.
-- Patrick