Finally everything has been revealed and I wanted to summarize what it means for all of us. We speculated whether WPF or Silverlight is dead in Windows 8 etc. and it turns out nothing is dead. Here is architecture for Windows 8:
As you can see what’s new in Windows 8 is WinRT platform that covers native Windows 8 Metro style Apps. Desktop Apps on the right are essentially what we have today: WinForms, WPF and Silverlight. These continue to work.
New WinRT architecture seems to me is heavily based on Windows Phone 7 run-time. My reasoning for thinking this is that during keynote they said that Windows Phone 7 apps will run under WinRT unchanged. I suspected something like this since to run on low powered processors heavy optimization was needed and that optimization work was already done for Windows Phone 7 platform so leveraging that code in big Windows 8 that now must run on low powered processors makes sense.
They also showed that some simple Silverlight apps can be recompiled with minor changes to run under WinRT. Of course, we are yet to see how complex Silverlight code will be ported to WinRT, but as with everything new and different I expect there will be some gotchas.
I installed Windows 8 on one of our netbooks with touch screen and Windows 8 at this point is working great. I think once this is released it will be great operating system that spans tables and desktops. The power is in ability to use touch-based interface on tablets but when mouse and keyboard are needed you just plug that tablet into dock and big screen and you have your full blown Windows experience.
How this compares to iPad? I think very favorably if tablets that are of iPad quality, speed and price running Windows 8 show up. Lot of it is in the hardware corner.
For us developers, well we just got another new platform. We have WinForms, WPF, Silverlight and now WinRT. While WinRT is “Silverlight based” I think it must be treated as completely new platform which is all about touch and you have to write code that fits that environment.
I still see WinForms as best lowest common denominator, meaning if you want app that run on everything from Windows XP to Windows 8 you are best served using WinForms. If you are developing to target Windows 8 then you must simply use WinRT unless you want to target desktop explicitly in which case I still might recommend WinForms.
We will indeed provide components for new WinRT platform in addition to what we already have and are eager to start digging deeper into the platform.
Let me know what you think.
Hi
Interesting post – but if you wanted to do an app that spanned Windows XP to Windows 8, surely you’d want to use WPF, since the XAML concepts are the same (styling, templating, data binding etc). You can reuse the XAML that you create for your UI in WPF for when you migrate to Metro UI (with some minor modifications).
regards
Tanvir, thank you for your comment. Why I would not use WPF is three fold. Performance for one, it is still not there on Windows XP. Developer tools and speed of development second, WinForms designer in VS.NET and availability of high quality components trumps WPF. And lastly you cannot simply recompile WPF apps to WinRT. WinRT is XAML based platform, based largely on Silverlight, but different from it. I can tell you from our experience that you cannot easily even keep WPF and Silverlight components on same code base (if you want high quality ones that push platform) since they are different enough and use different hacks to be kept on same code base. So if you want to take full advantage of platform you have to go native, which is target Silverlight specifically and that is what we’ve done with out controls for Silverlight. So it is with WinRT, it is different enough from Silverlight that I suspect you will have to target it specifically. We should have more information on this as we develop on new platform.
Hi
Thanks for your response. Just to answer some of your points :
” Performance for one, it is still not there on Windows XP. Developer tools and speed of development second, WinForms designer in VS.NET and availability of high quality components trumps WPF.”
– Contrary to what people may think, WPF is not dead (see http://msdn.microsoft.com/en-us/library/bb613588(v=VS.110.aspx), whereas Winforms is no longer being improved on by Microsoft. The tools / designer support is getting better and better with every new release of WPF – even more so by the looks of WPF 4.5, which goes towards addressing the points you make.
But agreed for simple LOB apps just stick with Winforms.
” … lastly you cannot simply recompile WPF apps to WinRT. WinRT is XAML based platform, based largely on Silverlight, but different from it. ”
– WPF is also XAML based obviously,to the extent that the XAML that’s used in a WPF project can be pretty much ported over to Metro UI (one or two videos in the Build conference show this). As a result, skills learned using WPF \ Xaml (styling, data binding etc etc) can be transferred when developing Metro apps. This cannot be said of Winforms.
Anyway, keep up the good work.
Hi Tanvir,
Great to hear from you. Unfortunately WPF design-time is still not even close to WinForms. Just trying writing a complex designer for VS.NET WPF editor and you’ll just see how painful that is. Regarding porting XAML from WPF to WinRT, only simple stuff. Try porting little more complex WPF XAML to Silverlight today to get taste of how complex things get… There are no triggers in Silverlight or WinRT just to start… Well technically WinRT has EventTrigger but that is just subset of what WPF has.
Hi Dennis,
This inquiry has more to do with your “metro” update. This may be a dumb questions, but is your metro update just a way to make WinForms look like a metro app or does it make it a metro app? It seems the former.
I ask because WinForm apps run only on the “legacy” OS, right? By legacy I mean, in Windows 8, you would go to the Desktop first, then fire off the application.
As you can see, I’m a bit confused.
Thanks.
Hi Jeff, what we are doing with our WinForms controls is provide Metro design for WinForms apps which you can deploy on anything from Windows XP to Windows 8. Metro is just design language.
Windows 8 uses Metro design language for full-screen tablet apps, they call Immersive apps, that are implemented using new WinRT framework which is completely different from WinForms/GDI, WPF and Silverlight. Its completely new tech.
So you can implement Metro design using any UI technology you choose, even HTML, but to create Immersive Windows 8 apps which also use Metro design you can only do on Windows 8 and using WinRT run-time.
Hope this helps.