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