0

I want to rewrite an application that will be available on Windows desktop, Windows store, and Windows Phone.

Current state: Windows desktop is MFC app. Windows store and Windows Phone are sharing a PCL for backend and network comm.

I have to rewrite the whole app so that backend and APIs are added once and reused by 3 platforms.

One way I see is to rewrite the desktop app using .Net and reuse the PCL. But WPF .Net desktop apps are slow. Evernote Windows app was a .Net app until version 3, they moved to WTL C++ in 4.0; Evernote Windows moved to WTL

I am confused after reading that thread on Evernote. What other options do I have?

Ron
  • 24,175
  • 8
  • 56
  • 97
  • 1
    `But WPF .Net desktop apps are slow` - sorry, we have several WPF based products and they work amazingly good. Granted, you're not going to make a Need for Speed kind of game, but for regular Windows UI it's OK. It seems these evernote guys have no idea how to properly do WPF UIs and `they` make them slow? Many developers approach WPF with a winforms mentality, which results in huge, horrible failure and torture and pain. – Federico Berasategui Apr 08 '14 at 14:53
  • 1
    @HighCore Evernote used the .NET 3.5 version of WPF, which indeed had some major issues, especially with font smoothing. .NET 4.0 wasn't widespread at that time, so they decided to take the safe path and migrate to C++. WPF has gone a long way since then. – Kevin Gosse Apr 08 '14 at 14:55
  • BTW, I'm not familiar with WTL, but if you go XAML then you can share pretty much everything between WPF, WinRT and Windows Phone, as opposed to having to write 3 different apps altogether. – Federico Berasategui Apr 08 '14 at 14:57

2 Answers2

1

Evernote dropping WPF was years ago. Most of the issues they faced were fixed in .NET 4.0. A native MFC app will often be lighter than a WPF app, but you can't really drop WPF altogether just on the assumption that it's slow. Note that the text editor of Visual Studio is entirely based on WPF.

That said, your options depend really on what you want. I'd recommend going for sharing the business logic in PCL assemblies, and write the desktop UI in WPF. Another option could be to write your whole application using WinRT, and betting on the fact that the next version of Windows 8 will allow for Windows Store application to execute in windowed mode (as announced a week ago during the Build).

Kevin Gosse
  • 38,392
  • 3
  • 78
  • 94
0

WTL is more efficient and flexible than MFC/.net for the windows desktop version. It has been recently updated.

Jan S
  • 408
  • 6
  • 15