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类
[编辑]命名规范
[编辑]限制与规范
[编辑]参考文献
[编辑]- ^ Abel Avram. Design Details of the Windows Runtime. InfoQ. 21 September 2011 [2012-08-03]. (原始内容存档于2012-09-10).
- ^ Brian Klug & Ryan Smith. Microsoft BUILD: Windows 8, A Pre-Beta Preview. AnandTech. 13 September 2011 [2012-08-03]. (原始内容存档于2012-09-10).
- ^ 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 (页面存档备份,存于互联网档案馆).
- ^ What is the COM marshaling overhead in calling the WinRT API from C# ?. Social.msdn.microsoft.com. [2012-04-24].[永久失效連結]
- ^ Using the Windows Runtime from C++ | BUILD2011 | Channel 9. Channel9.msdn.com. 2011-09-14 [2012-04-24]. (原始内容存档于2011-10-12).
- ^ Sivakumar, Nish. Visual C++ and WinRT/Metro - Some fundamentals - CodeProject®. Codeproject.com. 2011-09-29 [2012-04-24]. (原始内容存档于2011-12-08).
- ^ Windows Runtime C++ Template Library. Msdn.microsoft.com. [2012-04-24]. (原始内容存档于2016-04-06).
- ^ Using the Windows Runtime from C++ | BUILD2011 | Channel 9. Channel9.msdn.com. 2011-09-14 [2012-04-24]. (原始内容存档于2011-10-12).
- ^ WinRT and .NET in Windows 8 (Paragraph 5). [2012-08-03]. (原始内容存档于2012-01-23).