Cef 架构
cef支持各種語(yǔ)言和多種操作系統(tǒng)。在設(shè)計(jì)的時(shí)候充分考慮了性能和易用性。cef核心功能提供了c和c++的接口。cef提供了和主程序之間的通信能力(利用 custom plugins, protocols,javascrpit object 和 javascript extensions)。主應(yīng)用程序可以選擇性的使用控制 資源的加載,切換, context menus, printing等。
依賴
chromium
webkit
v8
skia
angle
線程注意事項(xiàng)
CEF線程有如下幾種
typedef enum {
TID_UI,
TID_DB,
TID_FILE,
TID_FILE_USER_BLOCKING,
TID_PROCESS_LAUNCHER,
TID_CACHE,
TID_IO,
TID_RENDERER,
} cef_thread_id_t;
在使用線程的時(shí)候需要注意如下幾點(diǎn):
千萬(wàn)不要阻塞UI線程
UI線程會(huì)任務(wù)是主線程,當(dāng) CefSettings.multi_threaded_message_loop = false的時(shí)候。
所有的webkit和V8的交互必須用 TID_RENDERER線程
CefPostTask 方法可以再不同線程中進(jìn)行異步調(diào)用
接口
CefApp,此接口用來(lái)傳遞到CefInitialize(),和允許應(yīng)用程序定制全局,如資源加載,代理。這些功能是由所有進(jìn)程共享的,有些必須實(shí)現(xiàn)瀏覽器的過(guò)程中,必須在渲染過(guò)程中執(zhí)行。見(jiàn)詳情頭文件的注釋。
CefClient,此接口用來(lái)傳遞到CefCreateBrowser() or CefCreateBrowserSync(),和充當(dāng)單獨(dú)CEF Browser事例和客戶端應(yīng)用程序的連接,也負(fù)責(zé)請(qǐng)求和顯示處理的接口。請(qǐng)求處理,顯示處理等額外的接口,通過(guò)這個(gè)接口暴露。
CefBrowser,公開(kāi)由瀏覽器提供的功能。包括前進(jìn)后退導(dǎo)航,來(lái)源檢索,加載請(qǐng)求等,一個(gè)CefBrowser可能有一到多個(gè)子類的CefFrame對(duì)象。在一個(gè)特定的過(guò)程或一個(gè)特定的線程必須調(diào)用一些方法,所以仔細(xì)閱讀文檔。
CefBrowserHost - 公開(kāi)有關(guān)運(yùn)行browser進(jìn)程中唯一可用的browser窗口的功能。例如,檢索本地父窗口句柄,或銷毀browser窗口。
CefRenderProcessHandler - 公開(kāi)WebKit和V8對(duì)渲染進(jìn)程中應(yīng)用程序的集成能力。通過(guò)CefApp返回此對(duì)象的一個(gè)??實(shí)例。
進(jìn)程注意事項(xiàng)
CEF3使用了很多不同的進(jìn)程:
Broser process- 這個(gè)進(jìn)程可以認(rèn)為是應(yīng)該程序的主進(jìn)程,當(dāng)調(diào)用CefInitialize()的時(shí)候建立
Render process- web容器(webkit和v8)在此進(jìn)程中執(zhí)行
plugin process- 插件(如 Flash)
GPU process-GPU渲染進(jìn)程
Utility process- 各種其他任務(wù)在這個(gè)進(jìn)程中跑。
所有關(guān)于chrome 進(jìn)程的資料可以在這里和這里找到。
CefBrowser 和 CefFrame 在browser和render進(jìn)程中都存在,并且傳遞一系列callbacks。 CefProcessMessage能夠在browser進(jìn)中利用CefBrowser::SendProcessMessage 函數(shù)發(fā)出, 并且在CefClient::OnProcessMessageRecieved 和CefRenderProcessHandler::OnProcessMessageRecieved 接收。
重要的細(xì)節(jié)
CEF3 有如下幾個(gè)比較重要的類:
CefMainDelegate - 用于普通進(jìn)程的邏輯過(guò)程
CefContentClient- 在普通進(jìn)程 展現(xiàn)Content Api的回調(diào)。
CefContext-在browser進(jìn)程中,展現(xiàn)全局的CEF上下文。 一個(gè)單獨(dú)的CefContext對(duì)象時(shí)由CefInitialize()建立,有CefShutdown銷毀。
CefBrowserMainParts- browser 進(jìn)程的邏輯
CefContentBrowserClient-在browser 進(jìn)程展現(xiàn)Content Api的回調(diào)。
CefBrowserHostImpl-是CefBrowserHost 的實(shí)現(xiàn)
CefContentRendererClient- 在render 進(jìn)程中展現(xiàn)Content Api的回調(diào)
CefBrowserImpl- CefBrowser的實(shí)現(xiàn)者
總結(jié)
- 上一篇: 机器人砂型铸造_安诺伊智能机器人丨助力压
- 下一篇: 大疆口袋相机美颜怎么设置_大疆口袋小相机