读书笔记——WebKit技术内幕 WebKit架构和模块
WebKit可以在不同的操作系統上工作。不同瀏覽器可能會依賴不同的操作系統,同一個瀏覽器使用的WebKit也可能依賴不同的操作系統。在操作系統層之上就是WebKit賴以工作的眾多第三方庫。通常講,它們包括圖形庫、網絡庫、視頻庫等。在它們之上就是WebKit項目,細分為兩層。WebKit部分包含了目前被各個瀏覽器所使用的WebKit共享部分,具體包括HTML解釋器、CSS解釋器、SVG、DOM、渲染樹(RenderObject樹、RenderLayer樹等),以及Inspector(Web Inspector、調試網頁)。當然,這些共享部分有些是基礎框架,其背后的支持也需要各個平臺的不同實現。JavaScriptCore引擎是WebKit中的默認JavaScript引擎,也就是說一些WebKit的移植使用該引擎。之所以說它是默認的,是因為它不是唯一并且是可替換的。在Google的Chromium開源項目中替換為V8引擎。WebKit Ports指的是WebKit中非共享部分,對于不同瀏覽器使用的WebKit來說,移植中的這些模塊由于平臺差異、依賴的第三方庫和需求不同等方面原因,往往按照自己的方式來設計和實現。這其中包括硬件加速架構、網絡棧、視頻解碼、圖片解碼等。在WebCore和WebKit Ports之上的層主要提供嵌入式編程接口,這些嵌入式接口是提供給瀏覽器調用的。狹義WebKit和WebKit2的接口與具體移植有關,所以有一個與瀏覽器相關的綁定層。綁定層上面就是WebKit項目對外暴露的接口層。
相比于狹義WebKit,WebKit2是一套全新的結構和接口,而不是一個簡單的升級版。它的主要目的和思想同Chromium類似,就是將渲染過程放在單獨的進程中完成,獨立于用戶界面。WebKit2也引入了插件進程,而且它還引入了網絡進程。Web進程對應于Chromium中的Browaer進程。接口就暴露在該進程中,應用程序只需調用該接口即可。
WebKit2的多線程模型參考了Chromium模型和框架。首先,Chromium使用的仍然是WebKit接口,而不是WebKit2接口,也就是說Chromium是在WebKit接口之上構建的多線程架構。其次,WebKit2的接口希望盡量將多進程結構隱藏起來,這樣可以讓應用程序不必糾纏于內部細節。但是,對于Chromium來說它的主要目的是給Chromium提供Content接口以便構建瀏覽器,其本身目標不是提供嵌入式接口,雖然有CEF項目基于它構建了嵌入式接口。最后,Chromium中每個進程都是從相同的二進制可執行文件啟動,而基于WebKit2的進程則未必如此。
總結
以上是生活随笔為你收集整理的读书笔记——WebKit技术内幕 WebKit架构和模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 短线绝招--潜龙出海
- 下一篇: python 时间提醒_Linux下基于