So what does Windows 8 mean for .NET developers?
Unfortunately, the Microsoft Build conference conflicted with our company's 5-year anniversary and the associated sailing trip in Greece. Fortunately, the blogosphere and twitter-space provided plenty of opportunities for trying to grasp what the stuff Sinofsky and his team have been sharing in Anaheim means for us developers. I tried to read as much as is available right now (the Saturday after the conference), and this is my interpretation of that news.
- Are supposed to exist side-by-side with desktop apps (at least, for the next few Windows versions).
- Run in a kind of sandbox and don't have access to desktop apps
- Are suspended within 5 seconds after the user has switched to another app. This should increase battery life and keep the system responsive.
- Cannot use overlapping dialog boxes
- Can be distributed through a new kind of app store
- Can implement specific APIs for easy exchange of files and other data streams (e.g. you don't have to download a file to a disk first to use it in another app)
- Can be build using three sets of technologies, all ran against the new WinRT API
- C/C++ with XAML
- C#/VB with XAML
- Consequently, Metro apps can be build regardless in what technology you have been investing
- Microsoft apparently didn't mention JQuery, but it seems to work after all.
- WinRT is a fully object-oriented API next to Win32 that talks directly to the Windows Kernel. It is based on a modern version of COM, but that fact is completely hidden away.
- WinRT is created for the fast fluid experience required for Metro apps, so any operation that might take longer than 50ms to complete is only available through an asynchronous model
- Existing Silverlight apps only require a few minor changes to some namespaces and any networking code to be able to run as Metro apps
- If you develop in C#/VB, then you'll be running against the full .NET framework, but the API is filtered to what WinRT can provide. It works similarly as the .NET Framework Client Profile works. You could still use Reflection to access the hidden parts, but such apps will not be accepted by the app store.
- Make sure you read the excellent in-depth analysis of WinRT by Miguel de Icaza.
This also means that Metro apps have nothing to do with Silverlight, WPF or any other part of .NET for full-blown desktop apps. In fact, Windows 8 ships with the .NET Framework 4.5 which includes a shipload of new improvements, even to WPF. Everything discussed around WinRT and Metro is about building specialized apps specifically targetted to Windows 8. As far as I'm concerned, any posts talking about the death of the .NET framework or Silverlight (shame on you InfoQ!) are utterly bullshit and it seems Jeremy Likness agrees with that as well.