DCSIMG
My Build Event Insights - class Alon : public CPP, public Architecture

class Alon : public CPP, public Architecture

The smart virtual home of Alon Fliess

Syndication

My Build Event Insights

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.

Published Tuesday, September 20, 2011 11:03 PM by Alon Fliess

Comments

# My Build Event Insights « Mas-Tool's Favorites@ Wednesday, September 21, 2011 2:20 AM

Pingback from  My Build Event Insights «  Mas-Tool's Favorites

# re: My Build Event Insights@ Tuesday, September 18, 2012 10:56 AM

 I would not wish to develop this theme.

P.S. Please review <a href="iconfunny58.deviantart.com/.../Business-Icons-for-Vista-310740047">Business Icons for Vista from iconfunny58</a>

# re: My Build Event Insights@ Tuesday, September 18, 2012 11:50 AM

 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 <a href="popavidi3nr.deviantart.com/.../Desktop-Boss-Icons-296886211">Desktop Boss Icns from popavidi3nr</a>

# re: My Build Event Insights@ Tuesday, September 18, 2012 12:34 PM

 Certainly, never it is impossible to be assured.

P.S. Please review <a href="email-icon-set.deviantart.com/.../Anchor-Icon-133918369">Anchor Icon from email-icon-set</a>

# re: My Build Event Insights@ Saturday, September 22, 2012 11:03 AM

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

P.S. Please review <a href="iconadiprua.deviantart.com/.../Black-Hand-Icons-282639866">Black Hand Icons from Iconadiprua</a>

# re: My Build Event Insights@ Thursday, April 11, 2013 5:27 AM

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

by slots3

# re: My Build Event Insights@ Monday, April 15, 2013 11:11 AM

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

by poker4

# re: My Build Event Insights@ Monday, April 15, 2013 9:40 PM

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

by poker7

# re: My Build Event Insights@ Tuesday, April 16, 2013 7:20 PM

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

by poker5

# re: My Build Event Insights@ Friday, April 19, 2013 12:06 PM

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

by poker3

# re: My Build Event Insights@ Sunday, April 21, 2013 10:27 PM

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

by poker5

# re: My Build Event Insights@ Monday, April 22, 2013 2:20 PM

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

# re: My Build Event Insights@ Monday, April 22, 2013 7:26 PM

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

# re: My Build Event Insights@ Tuesday, April 23, 2013 6:49 AM

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

by poker4

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Enter the numbers above: