To find out how today’s software developers think of their software development tools and workflows, I keep watching videos from them. Today I watched IAmTimCorey’s Desktop UI Showdown “WinForm vs WPF vs UWP vs Console – The C# Desktop UI Showdown (and the future with .NET 5)” video.
Comparison of different UI concepts
He starts with a comparison of different UI concepts from the console to UWP. Because Tim seems to be an expert for C# he focuses on the Windows eco system including WinForm, WPF and UWP into his overview, which are all technologies which help you to build desktop UIs.
Here is the most important information from the video:
Console
- Purpose: Automation, Batch
- Benefits: Quick, simple, stable, great for testing small code-snipets, cross-platform
- Drawbacks: Not for regular public “UX”
WinForms
- Purpose: Rapid Application Development (comes from Visual Basic, led to .NET etc.)
- Benefits: Quick, easy, widely used, reliable
- Drawbacks: Not widely used by “new” developers, CPU-bound, GUI hard to scale (fixed values on forms, problems with different “media sizes”), code is bound to design
WPF
- Purpose: Powerful UI (“powerful, amazing things”)
- Benefits: DirectX powered (app faster, bouncing buttons), modern design (gradient backgrounds), binding (designed for disconnected architecture, MVVM), UX design and programming separated (animations, gradients)
- Drawbacks: Slow development, XAML confusing and very wordy, too many options (Tim: “The amount of things you can do, means you often don’t do most of them”) – Example: 10-20 lines for a gradient, leading to 5000 lines for only one form! (-> Third part tools necessary: e.g DevExpress)
UWP
- Purpose: Comes with Windows 8, universal, app-style (write it once, run it anywhere on Windows!)
- Benefits: sandboxed (no access to system ressources without asking), MS Windows store distribution, clear standards (GUI guidelines)
- Drawbacks: sandboxed (a lot of things are not possible without permission), difficult to distribute (Windows store only, problems to run your own apps), Win10/Xbox only -> Small audience
Microsoft opening to other platforms
Tim’s conclusion about the dfferent technologies and possible ways for the future are:
- UWP is the least useful of them all.
- WinForms still has its place, because even today it help to build apps quickly and simply; And it gets updated to .NET core.
- .NET core 3 supports Windows Forms and WPL. But currently they are both not cross-plattform! Both are both tight tightly to Windows APIs.
- Perhaps Xamarin in the future? Or a combination with .NET Core.
- .NET Core will be the way to go for most desktop applications in the future – but probably not now because the tooling e.g. designers are not finished.
- “XAML island” brings GPU-fast UI WPF elements to WinForms.
- MS opens up to other platforms (Apple, Google, Linux, Docker).
dash’s view
My personal point of view is that Microsoft has invented a lot of toolings, workflows and even programming languages for desktop and web development in the past. But I cannot really see a clear “way to go”.
On the one hand, MS must ensure that old programs and dev tools are also supported in the years to come, since changes in larger companies and authorities often take many years or established paths are reluctant to leave. On the other hand, development continues with apps and online. And there are new approaches with Blazor.
See also the comments of other developers below the video:
https://www.youtube.com/watch?v=yq0dSkA1vpM