眼花繚亂中看Metro Style—MS Apps Store—Desktop Apps以及Win-Runtime和Win32

萬個函式千個類發表於2013-02-28
WinRT(Windows Runtime)是微軟新一代在Win8 Metro下開發框架, 它是一套物件導向、跨語言並且是Native的庫。 

如果有人問我WinRT的核心技術是什麼? 我的答案是 COM + .Net Metadata + Xaml, 這三者可以說是微軟這些年所有技術的精華。

COM元件技術一直是微軟在使用者態的核心技術之一, 它讓我們可以無縫的以物件導向的方式搭建應用程式,隨著.Net的發展,我們曾經以為它已逐漸過時,但是在WinRT中,我們看到它又回來了。 
.Net Metadata是微軟在 .Net繼承過來的, 通過它描述元件的類層次和介面, 實現跨語言的呼叫。
Xaml是微軟從WPF中繼承過來的, 相對於傳統GDI視窗和控制元件, 它的優勢我們就不多說了, 它是微軟下一代介面的表現方式。

 對於Win8 Metro應用(現在微軟喜歡把它叫住Windows Store App), 我們一直很好奇Win8的架構, 它與傳統Win32究竟是什麼關係?
對於這個問題, 我們在網上一般會喜歡用這個圖作為答案:


上面的圖給我們的感覺是WinRT完全不同於傳統的Win32應用程式, 是直接基於Windows核心的,它和Win32 API是並列的2套開發框架。
或許是微軟試圖這樣設計, 所以給了我們這樣一張架構圖, 但是後來我們逐漸發現, 實際情況卻是這樣的:

WinRT不是直接基於Windows核心, 而是直接搭建在Win32上的一個系統級應用, WinRT的下層還是Win32 API。
通過工具, 我們可以看到傳統的Desktop Application和WinRT App是執行在同一個Session, 同一個Window Station,同一Desktop的, 微軟只是在它們之間的切換作了些限制。

另外,微軟通過新增加一些API(比如NtCreateLowBoxToken)讓Metro App以很低許可權執行在Sandbox(App  Container)中, 對於和許可權相關的API呼叫,它會通過一個Broker來執行。




總之, 一開始我們會覺得WinRT很好奇, 但是後來我們逐步發現它其實並沒有那麼神祕, 它是很多微軟現有技術的合成體。 微軟的技術更新很多時候讓人眼花潦亂。
但是底層本質的東西(比如COM,D3D,Win32)其實一直很少改變。

http://www.silverlightchina.net/html/windows8/study/2013/0113/21392.html
=============================
個人覺得微軟WinRT就是減小開發應用的成本和時間,同時為應用能跨PC、手機和平板做好準備。
=============================


相關文章