正文

Internet Explorer體系結(jié)構(gòu)(4)

IE8 & 9開發(fā)實(shí)戰(zhàn):基于下一代IE的應(yīng)用開發(fā) 作者:(美)克羅利


  

1.1.4  松耦合Internet Explorer

松耦合Internet Explorer(LCIE)是在IE 8中引入的,它利用進(jìn)程分離來提高瀏覽器的可靠性和性能。就像為保護(hù)模式所做的修改一樣,松耦合IE重新組織和定義了組件及其通信模型。圖1-3中給出了這一模型。

圖1-3  松耦合IE體系結(jié)構(gòu)框圖

松耦合IE對(duì)瀏覽器的體系結(jié)構(gòu)進(jìn)行了重新設(shè)計(jì),使得框架選項(xiàng)卡運(yùn)行在分離進(jìn)程中,而不是同一進(jìn)程的分離線程中??蚣苓M(jìn)程是在中完整性級(jí)別運(yùn)行的,它代替了IE 7的ieuser.exe,作為通用代理對(duì)象。這個(gè)代理對(duì)象使用異步通信模型來處理完整性和提升要求。在IE 8之前,當(dāng)禁用松耦合IE時(shí),瀏覽器框架、選項(xiàng)卡和擴(kuò)展都是作為共用瀏覽器進(jìn)程的分離線程來運(yùn)行的。

1. 共享用戶界面和虛擬選項(xiàng)卡

盡管選項(xiàng)卡進(jìn)程和它們的組件與框架進(jìn)程是隔離的,但它們?nèi)匀伙@示在框架的用戶界面上下文中。IE框架進(jìn)程將所有以中、低完整性級(jí)別運(yùn)行的選項(xiàng)卡進(jìn)程都放在IE框架用戶界面中,位于正確的選項(xiàng)卡位置。IE還確保了工具欄、瀏覽器欄和所有其他擴(kuò)展性點(diǎn)都正確疊放在框架上——即使這些擴(kuò)展是在選項(xiàng)卡進(jìn)程中運(yùn)行也是如此。

虛擬選項(xiàng)卡是一項(xiàng)松耦合IE子功能,可以僅利用一個(gè)進(jìn)程來虛擬托管處于不同完整性級(jí)別的不同選項(xiàng)卡進(jìn)程。在導(dǎo)航期間,代理進(jìn)程決定一個(gè)新頁面是否應(yīng)以保護(hù)模式加載。必要時(shí),該代理將產(chǎn)生一個(gè)處于新完整性級(jí)別的進(jìn)程,并將此進(jìn)程的用戶界面與框架集成在一起。這樣就可以在同一個(gè)框架用戶界面中托管低、中完整性級(jí)別的進(jìn)程。

注意:

在IE 7中,如果要在不同完整性級(jí)別的區(qū)域之間進(jìn)行導(dǎo)航(例如從Internet到intranet),IE會(huì)產(chǎn)一個(gè)新的框架窗口來加載該頁面。這是必要的,因?yàn)樵贗E 7中,框架和選項(xiàng)卡是運(yùn)行在同一進(jìn)程中的,而一個(gè)進(jìn)程只能運(yùn)行在一種完整性級(jí)別。

2. 故障修復(fù)

進(jìn)程分離不僅使瀏覽器能夠監(jiān)視和控制選項(xiàng)卡可以做些什么,還能對(duì)這些選項(xiàng)卡產(chǎn)生的問題和故障做出反應(yīng)。在IE 8之前版本的IE中,任何異常(例如,被零除、訪問沖突或堆棧溢出)都可能會(huì)使整個(gè)瀏覽器崩潰,包括框架、所有選項(xiàng)卡和所有擴(kuò)展。到了IE 8,瀏覽器框架監(jiān)視選項(xiàng)卡故障,如果其中一個(gè)發(fā)生故障,則嘗試創(chuàng)建一個(gè)新的選項(xiàng)卡進(jìn)程,并將狀態(tài)恢復(fù)到該進(jìn)程中。如果故障修復(fù)失敗,用戶會(huì)得到通知。

1.2  瀏覽器框架、選項(xiàng)卡和用戶界面

IE的用戶界面已經(jīng)體現(xiàn)了相當(dāng)多的功能,更不要說用戶最終要面對(duì)的就是瀏覽器的用戶界面了。下面幾節(jié)將詳細(xì)介紹IE框架的用戶界面體系結(jié)構(gòu),以及從平臺(tái)角度可以擴(kuò)展的領(lǐng)域。

這一節(jié)介紹的大多數(shù)功能,在IE的可托管版本(WebBrowser控件和MSHTML)都是不可用的。出于簡潔性考慮,我將在本章“托管與重復(fù)使用”一節(jié)對(duì)IE正常版和托管版本都能使用的功能進(jìn)行注釋。


上一章目錄下一章

Copyright ? 讀書網(wǎng) leeflamesbasketballcamps.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)