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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探