Before the Build Windows conference started I was attempting to predict what the biggest splash would be. My best guesses included a Metro styled shell (that was very touch “friendly”) and some kind of Windows Store to allow Windows apps to be distributed globally and quickly. What we got was so much more, a unified OS with all the touch capabilities of a tablet (Metro Style Apps) that also fully supports the traditional precision mouse click environment of say Photoshop (Desktop Apps), take a quick peak at this diagram…
As you soak in the diagram there are three really important things that you need to understand about metro style development:
- This is not Silverlight\.NET development
- There is a new Window Runtime API (WinRT).
- and … this is *not Silverlight\.NET development*
Now Steve Sinofsky did a masterful job of laying out this new paradigm without frightening all the Windows developers who have joined the the .NET soiree since the start of the century, by convincing us that not only will we be happy in the new world but our existing code will compile easily (by updating a few name spaces). The WinRT APIs *should* feel natural to a .NET developer, it shares some features with the CLR/CLI standard like the metadata format, but again I repeat this is not the .net framework!
WinRT APIs are native they are as close to the metal as can be, it was implemented in native C++ and tuned for performance. Effectively these are designed as In memory binary interfaces with direct invocation, vtable dispatch. Fast and very efficient, C++ developers should rejoice!
One of the things I had to get used to in WP7 development (especially pre Mango) was the idea of asynchronous programming. This pattern encouraged you to develop really responsive UIs in the face of limited phone resources and potentially poor and inconsistent network connections. Which leads me to the wonderful revelation that 10% of the entire WinRT API supports asynchronous operations. 10% coverage is huge, when you consider all the spurious methods that are there to help setup other calls. The rule used was that any call that could potentially take more than 50ms will be asynchronous.
There are several things I would like to discuss in future posts when I actually get my hands on Windows 8 development environment they include:
- Metro style
- No overlapping windows … MessageBox.Show() has been evicted!
- GDI is dead … long live Direct X (and hardware acceleration)