My Build Event Insights

September 20, 2011

You didn’t have to go to //BUILD/ to get the information and knowledge of the new Windows Platform APIs; you could watch all the sessions from the comfort of your home, and I encourage you to do so, however attending the conference helps obtaining a perception about the future of Microsoft and especially the future of Windows technologies and the reaction of the developers that attended the conference.

I didn’t want to post about the conference before I have a clear picture, and believe me the picture was obscured. According to the first day keynote and the discussions on tweeter and the various mailing lists, I got it all wrong; however by digging into the implementation of WinRT, by talking with people from the Platform team and by attending the last day sessions, I got a better and clearer picture.

So what is Metro Style Application, what is WinRT, and should I learn C++ or HTML & JavaScript?

Let’s start with the underlying system. Windows Run-Time (WinRT) is a new platform for using and consuming the Windows OS resources. It is a modern native layer on top of Win32 and the Windows Kernel that replaces Win32 APIs and other frameworks like MFC for the native world and many of the .NET classes and technologies for the managed environment.

  • WinRT has a new type system, quite similar to the .NET Common Type System (CTS), however it is optimized for native code usage and for cross language calls with .NET, JavaScript and C++ in mind. The type system also provides rich type information that is based on the same metadata schema of .NET, however for native code there is no IL, GC and JIT.
  • WinRT is heavily based on COM, however it is not IDL based, and we get all the goodies of a modern Object Oriented based technology such as classes, static functions, methods, properties, delegates, events and inheritance.
  • WinRT APIs are either asynchronous for potentially long operations, or synchronous for fast non-blocking functions.
  • WinRT provides the installation facilities as well as the environment activation and hosting.
  • WinRT is based on components. This enables sharing implementation between languages.
  • WinRT provides rich mechanism for inter Metro application communication through Contracts – as a developer you have the Launch Contract, Search Contract, Share Contract and many more. You can provide contract implementation or consume a contract.

Metro is the new client development platform. It is based on WinRT classes. Metro applications are fast, smooth, and safe. Metro application can use only "safe" APIs, which are the WinRT classes’ members and a white list of other APIs. For .NET a special client profile is provided that contains only non (potentially) blocking calls and does not contain duplications for APIs provided by WinRT. To use sensitive user information such as location devices or a Web Cam, you need to declare these needed capabilities. Windows will ask the user for permission to run your code and use these capabilities (much like the standard for mobile applications). Metro Apps occupy the whole screen (chrome-less) and have a new life time management. They have to start quickly, they get suspended once they are in the background and background apps get terminated if the system resources are low. Each WinRT application runs as an STA COM component, and if there is a need to answer a new contract request, a new STA instance is lunched.

Now to some of the BIG concerns, what are the consequences of these new Windows mechanisms?

If you are a Windows C++ developer, it means that you get much better tooling and a framework that resembles the .NET development API. You need to learn the XAML concepts and the Metro UI object model. You also need to learn the C++ extensions for WinRT – although if you are familiar with C++/CLI, the extensions are very much the same. If you haven’t upgraded your knowledge to C++ 11, you also need to handle this learning curve. The result is much better productivity, safe code, and fast & fluid user interface.

C++ is back, as Herb Sutter said in his talk – for fifteen years we didn’t care about performance, but now that we pay for running our code in the cloud, or we target lightweight hardware such as slate devices and we want to preserve power, performance is a big issue again. C++ and WinRT are performance tuned and WinRT ref-count based resource management provides deterministic finalization which means that we don’t hold unneeded resources.

If you are a C#/VB developer and productivity is more important to you than execution speed and low resource consumption, continue to do what you already do. Use the Metro profile with the .NET framework. WinRT provides all the metadata information that is needed to create and call WinRT objects, while .NET provides the GC, JIT, and all other mechanisms that make .NET so easy to use. To call a WinRT component .NET uses the same CCW/CRW mechanism that is used for COM interop, however the borrowed metadata mechanisms plus the new WinRT type system make this interop story much easier and faster. I hear a lot of complaints from .NET developers that WinRT "kills" many .NET technologies, however the exact opposite is the true! WinRT borrowed many of its concepts from .NET, its metadata, properties, delegates & events and others. Metro UI is based on XAML and the Silverlight/WPF object model. It is easier for a .NET developer to develop new metro application compared to a native C++ MFC developer.

If you are a web developer, JavaScript is a first class citizen for developing Metro style application on top of WinRT. You get the WinRT object model, and method names even appear in Camel Casing even though for C#/VB/C++ they appear as Pascal Casing.

If you are a UI/UX developer, Blend 5 and Visual Studio UI editor are upgraded to support Metro style application. You can also design HTML/CSS using Blend. You get to preserve all your old knowledge and practice while designing with the new Metro style. You also get many predefined UI templates.

If you are a Windows developer, many of the technologies that you know are there. Everything behind the scenes is COM, with major abstraction on top of COM. You can choose the language that you want or the one that you think is better for the job. You can develop C++ based components using native libraries such as boost and consume them from JavaScript or C#.

There are many new details to dive into now, but we also have the time. We are not even in the beta phase of the system and things will certainly change, but we are starting to see the tip of the iceberg.

Add comment
facebook linkedin twitter email

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>



  1. icon packSeptember 18, 2012 ב 10:56

    I would not wish to develop this theme.

    P.S. Please review Business Icons for Vista from iconfunny58

  2. icon downloadSeptember 18, 2012 ב 11:50

    Has casually come on a forum and has seen this theme. I can help you council. Together we can come to a right answer.

    P.S. Please review Desktop Boss Icns from popavidi3nr

  3. icon librarySeptember 18, 2012 ב 12:34

    Certainly, never it is impossible to be assured.

    P.S. Please review Anchor Icon from email-icon-set

  4. icon clipartSeptember 22, 2012 ב 11:03

    I think, that you are not right. Let’s discuss it.

    P.S. Please review Black Hand Icons from Iconadiprua

  5. slots3April 11, 2013 ב 05:27

    интернет казино корона денежные переводы форсаж [url=]Игровые Автоматы Вагонетки[/url] казино on line бонус еще [url=]Онлайн Покер С Выводом Денег Это[/url]

  6. poker4April 15, 2013 ב 11:11

    интернет казино wmr 0 01 цена маркет [url=]игровые автоматы онлайн играть бесплатно елен казино[/url] казино онлайн bestforplay net, [url=]казино 25 долларов бесплатно без регистрации[/url]

  7. poker7April 15, 2013 ב 21:40

    казино фараон находится, казино игровые автоматы эмуляторы бесплатные!

  8. poker5April 16, 2013 ב 19:20

    интернет казино играть на интерес, казино с бездепозитным бонусом за регистрацию.

  9. poker3April 19, 2013 ב 12:06

    скачать казино автоматы [url=]можно ли играть в интернет казино в россии[/url] интернет казино на виртуальные деньги йошкар ола [url=]можно ли играть в интернет казино в россии[/url] казино фараон европейская рулетка украина [url=]Флэш игры азартные[/url]

  10. poker5April 21, 2013 ב 22:27

    казино онлайн mega jack, либо игры онлайн бесплатно казино без регистрации.

  11. jackpot5April 22, 2013 ב 14:20

    интернет казино вегас, а также опасно ли играть в интернет казино [url=]Бесплатная Интернет Рулетка[/url] казино принимающие яндекс деньги.

  12. kazino862April 22, 2013 ב 19:26

    казино семерочки [url=]казино без депозита бонус[/url] интернет казино как играть онлайн lines 98 [url=]гранд казино вход[/url]

  13. poker4April 23, 2013 ב 06:49

    казино va bank com [url=]скачать казино чайна таун 36[/url] казино онлайн бесплатно играть онлайн еще казино фортуна смоленск [url=]интернет казино бонус без депозита покер[/url] интернет казино реально ли выиграть [url=]казино европа в бишкеке[/url]

  14. jackpot65August 28, 2013 ב 09:27

    игровые автоматы маски [url=http://3.xn--80aadwfcinpak0a3b.xn--p1ai/vip273.html]как заработать деньги в интернете рулетка с девушками[/url] детские игровые автоматы минск, [url=http://3.xn--80aadwfcinpak0a3b.xn--p1ai]Скачать Игры На Деньги[/url] онлайн казино украины.

  15. kazino81August 28, 2013 ב 18:52

    игровые автоматы resident [url=http://5.xn--80aadwfcinpak0a3b.xn--p1ai/1005.html]покер пополнение счета с банковской карты[/url] игровые автоматы на андроид бесплатно 0 5 0 [url=http://5.xn--80aadwfcinpak0a3b.xn--p1ai/610.html]как заработать деньги в казино онлайн отзывы туристов[/url] карточные игры онлайн для телефона java и разрешены ли игровые автоматы [url=http://5.xn--80aadwfcinpak0a3b.xn--p1ai]Азартные Игры Покер[/url]

  16. blackjack23August 29, 2013 ב 04:08

    игровые автоматы 90 х [url=http://7.xn--80aadwfcinpak0a3b.xn--p1ai]Покер 3D[/url] покер онлайн titl!

  17. slots57August 29, 2013 ב 09:07

    интернет казино демо и 5 карточный покер с обменом правила [url=http://8.xn--80aadwfcinpak0a3b.xn--p1ai/get48.html]покер с webmoney украина[/url] игровые автоматы онлайн бесплатно шампанское!

  18. kazino1August 29, 2013 ב 18:37

    карточные игры солитер скачать [url=http://10.xn--80aadwfcinpak0a3b.xn--p1ai/infa897.html]игровые автоматы на qiwi[/url] скачать азартные игры компьютер бесплатно через торрент [url=http://10.xn--80aadwfcinpak0a3b.xn--p1ai/infa435.html]казино пополнить qiwi кошелек украина[/url] карточная игра на телефон samsung еще казино луксор софия [url=http://10.xn--80aadwfcinpak0a3b.xn--p1ai/infa579.html]интернет казино на реальные деньги отзывы[/url]

  19. blackjack55August 29, 2013 ב 23:02

    азартные игры assassins creed 3 2012 цена, либо карточные игрыnokia 6300скачать бесплатно [url=http://11.xn--80aadwfcinpak0a3b.xn--p1ai/work928.html]покер гривны онлайн[/url] русский покер на деньги [url=http://11.xn--80aadwfcinpak0a3b.xn--p1ai/work572.html]iphone покер на реальные деньги[/url]

  20. slots50August 30, 2013 ב 03:40

    правила игры в покер настольный, интернет казино игра lucky shot [url=http://12.xn--80aadwfcinpak0a3b.xn--p1ai]Игры Онлайн Игровые Аппараты Бесплатно[/url] играть 5 карточный покер!

  21. slot63September 18, 2013 ב 00:49

    слот автомат aztec, а также игровые автоматы джекпот бесплатно [url=]игровые автоматы играть клубника бесплатно онлайн[/url] игровые автоматы слоты играть бесплатно 777.