厚积薄发
海纳百川,有容乃大
posts - 79,comments - 170,views - 17万

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)其实一直很少改变。

参考资料: Turning to the past to power Windows' future: An in-depth look at WinRT

posted on   Richard Wei  阅读(1873)  评论(4编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

点击右上角即可分享
微信分享提示