Desktop UI Showdown (Windows focused)

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 includings WinForm, WPF and UWP into his video – which are all technologies which help you 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 (very wordy), too many options (Tim: “The amount of things you can do, means you often don’t do most of them”) – Example ex. 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: 
  • Tim’s guess: UWP is the least useful of them all.
  • WinForms still has its place, because eveb today it help to build apps quickly and simply; And it gets pdated to .NET core.
  • .NET core 3 supports Windows Forms and WPL. But currently they are both not cross-plattform! Both are both are 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. desingers are not finished.
  • “XAML island” brings GPU-fast UI WPF elements to WinForms.
  • MS opens up to other platforms (Apple, Google, Linux, Docker).
Tim’s summary is that the way to go (in most usual cases) would be to use Console , WinForm or WPF for future desktop applications.

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 future. But I think it is interested that 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 the web. And here there are new approaches with Blazor.

I also find the opinions of other developers who post their comments under Tim’s video interesting: https://www.youtube.com/watch?v=yq0dSkA1vpM