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

: 上面我们的讨论主要集中在x86的上。
        对于ARM版的WinRT, 因为没有传统Win32的负担,所以全部都是重新开发的, 因此先对于ARM版的WinRT, 微软甚至不开放传统desktok模式下的开发接口,上面微软的架构图又是正确的。
posted on 2013-01-13 16:31 Richard Wei 阅读(8200) 评论(6)  编辑 收藏 引用 所属分类: win8 metro

FeedBack:
# re: 理解WinRT
2013-01-13 17:33 | bukebushuo
感觉博主把概念弄混了,上面讲的貌似就是Windows8的架构
RT,实际就是Arm版的Windows8  回复  更多评论
  
# re: 理解WinRT
2013-01-13 17:44 | Richard Wei
@bukebushuo
WinRT的定义看这里:http://en.wikipedia.org/wiki/Windows_Runtime

Windows Runtime, or WinRT, is a platform-homogeneous application architecture on the Windows 8 and Windows RT operating systems.  回复  更多评论
  
# re: 理解WinRT
2013-01-13 17:47 | Richard Wei
WinRT的API看MSDN, 大部分和Xaml相关,其实没多少东西: http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx  回复  更多评论
  
# re: 理解WinRT[未登录]
2013-01-14 22:33 | megax
看看名字就知道来头不小, windows runtime!现在是基于win32的, 也许以后就不是了!看看windows的架构和rt库的用法, 要比macos先进很多!在rt的控制下,低权限,低功耗是未来趋势,也许以后只有rt下面的程序, 纯win32的会渐渐消失!  回复  更多评论
  
# re: 理解WinRT[未登录]
2013-01-19 10:11 | bukebushuo
@megax
要说低功耗,还得WIN32啊,不过历史的潮流总是在向前发展,嗯,是不是升级成WIN64更好点?哈哈!  回复  更多评论
  
# re: 理解WinRT
2013-07-19 13:29 | quanben
@megax
是啊,博主的第二张图更有含金量(如果是正确的话,但看上去基本是合理的)。从里面WinRT的黑色线拖出的抓手都是指向最新的技术可见一斑。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理