Internet Explorer体系结构(4)

  

1.1.4  松耦合Internet Explorer

松耦合Internet Explorer(LCIE)是在IE 8中引入的,它利用进程分离来提高浏览器的可靠性和性能。就像为保护模式所做的修改一样,松耦合IE重新组织和定义了组件及其通信模型。图1-3中给出了这一模型。

图1-3  松耦合IE体系结构框图

松耦合IE对浏览器的体系结构进行了重新设计,使得框架选项卡运行在分离进程中,而不是同一进程的分离线程中。框架进程是在中完整性级别运行的,它代替了IE 7的ieuser.exe,作为通用代理对象。这个代理对象使用异步通信模型来处理完整性和提升要求。在IE 8之前,当禁用松耦合IE时,浏览器框架、选项卡和扩展都是作为共用浏览器进程的分离线程来运行的。

1. 共享用户界面和虚拟选项卡

尽管选项卡进程和它们的组件与框架进程是隔离的,但它们仍然显示在框架的用户界面上下文中。IE框架进程将所有以中、低完整性级别运行的选项卡进程都放在IE框架用户界面中,位于正确的选项卡位置。IE还确保了工具栏、浏览器栏和所有其他扩展性点都正确叠放在框架上——即使这些扩展是在选项卡进程中运行也是如此。

虚拟选项卡是一项松耦合IE子功能,可以仅利用一个进程来虚拟托管处于不同完整性级别的不同选项卡进程。在导航期间,代理进程决定一个新页面是否应以保护模式加载。必要时,该代理将产生一个处于新完整性级别的进程,并将此进程的用户界面与框架集成在一起。这样就可以在同一个框架用户界面中托管低、中完整性级别的进程。

注意:

在IE 7中,如果要在不同完整性级别的区域之间进行导航(例如从Internet到intranet),IE会产一个新的框架窗口来加载该页面。这是必要的,因为在IE 7中,框架和选项卡是运行在同一进程中的,而一个进程只能运行在一种完整性级别。

2. 故障修复

进程分离不仅使浏览器能够监视和控制选项卡可以做些什么,还能对这些选项卡产生的问题和故障做出反应。在IE 8之前版本的IE中,任何异常(例如,被零除、访问冲突或堆栈溢出)都可能会使整个浏览器崩溃,包括框架、所有选项卡和所有扩展。到了IE 8,浏览器框架监视选项卡故障,如果其中一个发生故障,则尝试创建一个新的选项卡进程,并将状态恢复到该进程中。如果故障修复失败,用户会得到通知。

1.2  浏览器框架、选项卡和用户界面

IE的用户界面已经体现了相当多的功能,更不要说用户最终要面对的就是浏览器的用户界面了。下面几节将详细介绍IE框架的用户界面体系结构,以及从平台角度可以扩展的领域。

这一节介绍的大多数功能,在IE的可托管版本(WebBrowser控件和MSHTML)都是不可用的。出于简洁性考虑,我将在本章“托管与重复使用”一节对IE正常版和托管版本都能使用的功能进行注释。

读书导航