首页 > 范文大全 > 正文

WinRT:Windows 8之“魂”

开篇:润墨网以专业的文秘视角,为您筛选了一篇WinRT:Windows 8之“魂”范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

在新一代操作系统中,微软重新设计了Windows的界面。由于新界面与传统界面相比变化极大,所以显得非常激进。而隐藏在界面背后更重要的是,微软为新系统引入了一种全新类型的应用程序(App),这些Modern UI风格(之前称为Metro风格)的应用即使在性能较差的平板电脑上也能流畅运行。为实现它,微软开发了新的跨平台应用程序架构——winrt,它是windows Runtime的缩写,而非Windows RT操作系统的缩写,后者是微软为ARM处理器设备专门的Windows版本,基本上只能运行在Windows应用商店中下载的Modern UI风格应用。Windows Runtime是Windows 8和Windows RT两个系统的核心,同时它解决了Windows系统长久以来的软肋——容易感染病毒和系统崩溃。

严格控制、保证效率

桌面程序通常是由硬件相关的编程语言,如C语言和C++编写的,它们可以直接调用系统级的API(编程接口)。这样做的好处是可以保证程序的性能,但是也容易影响到整个系统的安全性、稳定性以及执行效率。如果几个桌面程序同时运行,那么Windows系统需要负责资源的调用。如果一个程序被恶意软件感染,那么它可能会影响甚至感染其他的进程;一个程序的错误(bug)可能会殃及整个内存区域,从而导致系统崩溃。即使侥幸躲过了上述情况,使用C语言开发程序的成本也很高,因为即使简单的功能也需要从头进行设计。

新的应用程序架构WinRT解决了这些问题。在该运行环境中,只有新设计的Modern UI风格应用可以运行,它们是以字节码(Byte Code)的形式存在,运行时才被WinRT转换为CPU指令,而非像传统桌面程序那样直接执行特定的CPU指令。也就是说,WinRT可以实现对系统资源的完全控制和合理分配,这样可以确保优先处理触控界面展现方面的计算需求,暂时冻结后台计算的处理,从而保证应用运行的流畅度。

虽然微软已经开发了类似的运行环境概念——.NET,但是WinRT没有直接使用它,而是改进了Windows 3.1时已引入的技术——COM(Component Object Model,组件对象模型)。通过它规定软件的对象,例如程序、程序组件或者库(DLL)之间进行通信的标准,实现对编写软件所用编程语言透明的应用程序新架构。

WinRT仅指定了一种必要的数据交换接口,其他对象已有的接收和处理数据方式均不起作用。与原始的COM组件相比,微软为WinRT优化了执行效率和与新编程语言的兼容性。此外,对象现在可以更快地获得接口和功能的通知。WinRT提供了一种标准的元数据格式,用来保存每个对象和接口的信息。

通过改进软件对象之间通信的效率,应用程序的开发者就可以大大减少黏合代码(glue code)的使用,程序代码只能在应用组件或操作系统组件之间运行。这样增加了开发和运行新程序的速度。WinRT可以运行使用Web开发语言,例如JavaScript编写的应用。它们在IE浏览器的Chakra引擎协助下直接转换为x86机器码,而无需一步一步进行编译执行。

WinRT提供了另一个改进Modern UI应用程序执行速度的秘诀:WinRT的API是异步执行的。输入和输出部分是独立的,这对程序员的多线程开发水平有一定要求。如果一个卡片应用的用户移动了卡片,异步执行的WinRT-API可以保证移动这个动作无延迟地进行反馈,同时卡片的内容则需要从互联网上进行载入和显示,避免同时操作时的无响应现象。

与Android类似的安全理念

WinRT所采用的安全理念与Android类似,即应用在沙盒(Sandbox)中运行,访问系统资源时有严格的限制。这就是为什么Modern UI风格的IE浏览器有很多功能限制的原因——它在沙盒中运行,不仅不支持Flash等常见的浏览器插件,而且与“自由”的桌面版本相比,只能保存网页到收藏夹,而不能进行收藏夹内容的管理。

WinRT是确保同样一款Modern UI应用可以在不同的处理器架构上运行的原因,因为应用是在跨平台的WinRT环境中而非直接在操作系统中运行的。这也解释了Windows RT系统平台中应用数量有限的原因——传统桌面程序必须移植到ARM架构,并需重新使用WinRT进行编译,重新学习和开发的成本极高。