Internet Explorer (IE)不只是一個Web瀏覽器,它還是一個非常廣闊的平臺,為Windows提供了一些必要的組件,用于將Web服務(wù)和和桌面應(yīng)用程序集成在一起。它的復(fù)雜體系結(jié)構(gòu)和擴(kuò)展性,以及大量依賴它的應(yīng)用程序,都反映了這一點(diǎn)。
本章將會從整體上概述IE的內(nèi)部與外部組成,介紹瀏覽器及其庫的體系結(jié)構(gòu),并為后面詳細(xì)討論主要功能區(qū)以及使用公開界面進(jìn)行開發(fā)等奠定信息基礎(chǔ)。
1.1 應(yīng)用程序體系結(jié)構(gòu)和相關(guān)項(xiàng)
IE由一個瀏覽器應(yīng)用程序和一系列庫組成,這些庫通過基于COM的體系結(jié)構(gòu)聯(lián)系在一起。這些二進(jìn)制文件只能供Windows平臺使用,從IE 8開始,能夠在所支持系統(tǒng)的x86、x64和IA-64體系結(jié)構(gòu)上使用。IE 8可供Windows XP SP2及更高版本和Windows Server 2003及更高版本使用。
IE瀏覽器是可執(zhí)行文件、庫及資源的一個松散集合,它們通過大量用于控制聯(lián)網(wǎng)、文檔托管、擴(kuò)展性和標(biāo)記處理的庫函數(shù),提供了一個用戶界面(UI)和安全基礎(chǔ)結(jié)構(gòu)。例如,Trident庫(mshtml.dll)控制網(wǎng)頁的分析、布局、呈現(xiàn)和顯示。URL Moniker庫(urlmon.dll)封裝Windows聯(lián)網(wǎng)API,為IE提供基礎(chǔ)通信、安全性和下載基礎(chǔ)結(jié)構(gòu)。外殼文檔查看(shdocvw.dll)提供了WebBrowser控件,它是一個得到廣泛應(yīng)用的庫,將IE功能與獨(dú)立應(yīng)用程序集成在一起。
IE依賴于由Windows和其他微軟產(chǎn)品提供的大量界面和API。Windows相關(guān)項(xiàng)包括:使用WinINET進(jìn)行緩存與cookie處理、通過Windows RSS平臺實(shí)現(xiàn)源的組織與管理,以及通過“強(qiáng)制完整性控制(MIC)”和“憑據(jù)用戶界面”來提供賬戶完整性保護(hù)。除了Windows API,IE還使用其他微軟庫,例如腳本引擎(JScript和VBScript)。
在Windows Vista及更高版本中,IE實(shí)現(xiàn)了一組特殊的安全性API,這些API針對權(quán)限與數(shù)據(jù)訪問,在進(jìn)程之間進(jìn)行了明確隔離。諸如“保護(hù)模式”和“松耦合Internet Explorer”等IE功能實(shí)現(xiàn)了上述基礎(chǔ)結(jié)構(gòu),提高了瀏覽器的整體安全性、可靠性和效能。
IE的一般體系結(jié)構(gòu)(如圖1-1所示)由一些可執(zhí)行文件和DLL組成:
框架/代理進(jìn)程(iexplore.exe,ieframe.dll):這些進(jìn)程用于控制IE的用戶界面(瀏覽器“框架”),控制對象通信和管理會話。
選項(xiàng)卡進(jìn)程(iexplore.exe):IE的選項(xiàng)卡管理器和容器,用于顯示網(wǎng)頁和擴(kuò)展。這一進(jìn)程受IE框架/代理進(jìn)程的控制。
外殼文檔視圖/ShDocVw(shdocvw.dll):MSHTML和其他OLE活動文檔(文檔對象)的“活動文檔容器”。這個庫還公開了WebBrowser控件。
Trident/MSHTML(mshtml.dll):一個代表IE布局、呈現(xiàn)和編輯引擎的“OLE活動文檔”對象。IE就是用它來顯示網(wǎng)頁。
URLMon(urlmon.dll):URL Moniker庫;用于封裝Windows聯(lián)網(wǎng)API,并為IE提供基礎(chǔ)安全性和下載管理。
WinINET(wininet.dll):負(fù)責(zé)Web協(xié)議通信、響應(yīng)緩存和cookie的Windows庫。
源存儲(msfeeds.dll):Windows RSS平臺API;由IE的RSS和ATOM 源閱讀器使用,以通過Windows“通用源列表”打開、顯示和管理源。
高完整性代理(ieinstal.exe),ActiveX Installer Service (axinstsv.exe):這些應(yīng)用程序用來執(zhí)行“高度完整性”操作(例如安裝ActiveX控件)。
Internet設(shè)置控制面板(inetcpl.cpl):用于進(jìn)行IE設(shè)置與配置的Windows控制面板界面。
HTML應(yīng)用程序宿主(mshta.exe):WebBrowser控件的一種實(shí)現(xiàn),它以最小化的用戶界面來運(yùn)行受信任的UI和腳本。
JScript和VBScript(jscript.dll,vbscript.dll):分別用于JavaScript和VBScript的主腳本引擎。
這個列表并沒有包含IE的全部相關(guān)項(xiàng)和庫,而只是列出了最重要的組件。在下面各章節(jié)中,將會更深入地研究IE、其相關(guān)項(xiàng)以及Windows系統(tǒng)之間的交互