Windows Runtime,或WinRT,是Windows 8中的一種跨平台應用程序架構。WinRT支持的開發語言包括C++(一般包括C++/CX)和託管語言C#VB.NET,還有JavaScript。WinRT應用程序同時原生支持x86架構和ARM架構,同時為了更好的安全性和穩定性,也支持運行在沙盒環境中。[1][2]
由於依賴於一些增強COM組件,WinRT本質上是一基於COM的API。正因為其COM風格的基礎,WinRT可以像COM那樣輕鬆地實現多種語言代碼之間的交互聯繫,不過本質上是非託管的本地API。API的定義存儲在以」.winmd"為後綴的元數據文件中,格式編碼遵循ECMA 335的定義,和.Net使用的文件格式一樣,不過稍有改進。[3]使用統一的元數據格式相比於P/Invoke,可以大幅減少WinRT調用.NET程序時的開銷,同時擁有更簡單的語法。[4]全新的C++/CX(組件擴展)語言,借用了一些C++/CLI語法,允許授權和使用WinRT組件,但相比傳統的C++下COM編程,對於程序員來說,有更少的粘合可見性,同時對於混合類型的限制相比C++/CLI也更少。在新的稱為Windows Runtime C++ Template Library(WRL)的模板類庫的幫助下(就好似ATL之於COM一樣)[5],規範的C++代碼(遵循COM化規範)也同樣可以用在使用了WinRT組件的程序里[6]。不過MSDN建議使用C++/CX而不是WRL。[7]

技術

編輯

WinRT組件設計時即着眼於多種語言和API直接的互通性,包括本地代碼、託管代碼還有腳本。比如C++/CX的組件擴展就被建議僅用於存在API壁壘的狀況,而不要用於其他目的。[8]
WinRT應用程序可以快速部署並運行在沙盒環境中。對運行庫的測試表明其是構築在Win32 API之上的[9].Net使用了類似的實現。

服務

編輯

元數據

編輯

元數據描述了用於WinRT平台的代碼。定義了一套編程範式來實現編寫可跨編程語言共享的面向對象的代碼。同時也支持反射等服務。

類型系統

編輯

WinRT組件

編輯

編程接口

編輯

C++(WRL,組件擴展)

編輯

JavaScript

編輯

Windows類

編輯

命名規範

編輯

限制與規範

編輯

參考文獻

編輯
  1. ^ Abel Avram. Design Details of the Windows Runtime. InfoQ. 21 September 2011 [2012-08-03]. (原始內容存檔於2012-09-10). 
  2. ^ Brian Klug & Ryan Smith. Microsoft BUILD: Windows 8, A Pre-Beta Preview. AnandTech. 13 September 2011 [2012-08-03]. (原始內容存檔於2012-09-10). 
  3. ^ de Icaza, Miguel (2011-09-15). WinRT demystified. Personal blog of Miguel de Icaza, 15 September 2011. Retrieved from http://tirania.org/blog/archive/2011/Sep-15.html頁面存檔備份,存於網際網路檔案館).
  4. ^ What is the COM marshaling overhead in calling the WinRT API from C# ?. Social.msdn.microsoft.com. [2012-04-24]. [永久失效連結]
  5. ^ Using the Windows Runtime from C++ | BUILD2011 | Channel 9. Channel9.msdn.com. 2011-09-14 [2012-04-24]. (原始內容存檔於2011-10-12). 
  6. ^ Sivakumar, Nish. Visual C++ and WinRT/Metro - Some fundamentals - CodeProject®. Codeproject.com. 2011-09-29 [2012-04-24]. (原始內容存檔於2011-12-08). 
  7. ^ Windows Runtime C++ Template Library. Msdn.microsoft.com. [2012-04-24]. (原始內容存檔於2016-04-06). 
  8. ^ Using the Windows Runtime from C++ | BUILD2011 | Channel 9. Channel9.msdn.com. 2011-09-14 [2012-04-24]. (原始內容存檔於2011-10-12). 
  9. ^ WinRT and .NET in Windows 8 (Paragraph 5). [2012-08-03]. (原始內容存檔於2012-01-23). 

外部連結

編輯

參見

編輯