Windows Runtime

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,組件擴充)

.NET

JavaScript

API

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). 

外部連結

參見