WPF vs WinForms Reconsidered

7 years ago, when we were at a decision point to choose a technology for an UI layer of a new desktop application, we’ve selected the WPF. The options where WinForms vs WPF, and it looked like WPF is the new but already widely used and promising framework with bright future while WinForms is something old which will be abandoned by everyone in favor of WPF. And we selected the WPF without thinking a lot – because you do not select an old deprecated technology if there is a new technology on the market which comes to replace the old.

But today IMHO the situation is different. Microsoft does not invest in WPF any more, Silverlight is dead, and WinForms is still supported and improved.
Some links on that issue:
Is WPF dead: the present and future of WPF
WPF vs. Windows Forms 2015
WPF vs. WinForms

So, today it is time to ask questions again and think about WinForms vs WPF again.

WinForms is a good old straight-forward reliable framework with many good controls and good performance. WPF provides many possibilities for better user experience, media presentation, astonishing visual effects – but do we need them all, if we are developing a LOB application?

Today I personally would choose WPF only if:

  • I need an outstanding customized rich UI with graphics, animations, media, special effects, sounds etc. and I will have a dedicated Expression Blend designer in my project.
  • I need an application with UI which resembles Windows 10 or android-style UI with single page and moving tiles/slides etc.
  • I have experienced WPF/MVVM developers available for the project.

In all other cases I would choose WinForms. It is completely fine for LOB application:

  • It is simple and intuitive. The learning curve good. The development is fast.
  • Mature and reliable.
  • Great performance (You may always say it is WPF application by worse rendering performance, comparing to WinForms)
  • There are great WinForms controls like DevExpress, which let you create a great-looking application which will be intuitive for Windows user.

P.S.: I had a discussion with my friend and colleague AlexZ on that issue (thanks Shura!!!) and he disagrees with me and thinks that WPF is the right choice. Here are some links in favor of WPF he gave me, which show that WPF is not abandoned by MS:

The Future of WPF Beyond the .NET Framework 4.6
The Roadmap for WPF
PRISM 6 FOR UWP, PRISM 6 FOR WPF UPDATE + A NEW LOGO TO ADORN ITS NEW HOME
MVVM Light Toolkit

So, the choices are hard.

giphy

Choose wisely. But in any case you will need to rewrite your UI for a new technology after about 5 years.

 

Advertisements

3 thoughts on “WPF vs WinForms Reconsidered

  1. IMO. if you know WinForms and WPF on the same good level, WPF development is much faster than WinForms one. And maintainability is better. Not to mention great controls for WPF from the same DevExpress and other vendors.
    If you know both platforms on the same low level – you can break performance and appearance on both in many many ways, even when using great controls.

  2. Why choose a specific technology like WinForms of WPF, when you can have both (and many more) by using a cross-platform UI layer like Nevron Open Vision – https://www.nevron.com/products-open-vision.aspx. The benefits are that once you get familiar with it you will be able to create applications and controls that run on multiple platforms from single codebase and your code won’t depend on Microsoft’s ever changing UI technologies, so you won’t have to rewrite your UI every 5 years.

    • I tried using Nevron’s framework alongside DevEx’s, and while it was easy enough to learn (in fact eerily similar to what I was used to from DevEx with the exception of course of hosting containers), everything looked rough, amateurish, and inconsistent. IMO Open Vision is not mature enough for really development yet,.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s