Cef 架構

cef支持各類語言和多種操做系統。在設計的時候充分考慮了性能和易用性。cef核心功能提供了c和c++的接口。cef提供了和主程序之間的通訊能力(利用 custom plugins, protocols,javascrpit object 和 javascript extensions)。主應用程序能夠選擇性的使用控制 資源的加載,切換, context menus, printing等。javascript

依賴

  1. chromium
  2. webkit
  3. v8
  4. skia
  5. angle

線程注意事項

CEF線程有以下幾種java

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;

在使用線程的時候須要注意以下幾點:c++

  1. 千萬不要阻塞UI線程
  2. UI線程會任務是主線程,當 CefSettings.multi_threaded_message_loop = false的時候。
  3. 全部的webkit和V8的交互必須用 TID_RENDERER線程
  4. CefPostTask 方法能夠再不一樣線程中進行異步調用

接口

  1. CefApp,此接口用來傳遞到CefInitialize(),和容許應用程序定製全局,如資源加載,代理。這些功能是由全部進程共享的,有些必須實現瀏覽器的過程當中,必須在渲染過程當中執行。見詳情頭文件的註釋。
  2. CefClient,此接口用來傳遞到CefCreateBrowser() or CefCreateBrowserSync(),和充當單獨CEF Browser事例和客戶端應用程序的鏈接,也負責請求和顯示處理的接口。請求處理,顯示處理等額外的接口,經過這個接口暴露。
  3. CefBrowser,公開由瀏覽器提供的功能。包括前進後退導航,來源檢索,加載請求等,一個CefBrowser可能有一到多個子類的CefFrame對象。在一個特定的過程或一個特定的線程必須調用一些方法,因此仔細閱讀文檔。
  4. CefBrowserHost - 公開有關運行browser進程中惟一可用的browser窗口的功能。例如,檢索本地父窗口句柄,或銷燬browser窗口。
    CefRenderProcessHandler - 公開WebKit和V8對渲染進程中應用程序的集成能力。經過CefApp返回此對象的一個​​實例。

進程注意事項

CEF3使用了不少不一樣的進程:web

  1. Broser process- 這個進程能夠認爲是應該程序的主進程,當調用CefInitialize()的時候創建
  2. Render process- web容器(webkit和v8)在此進程中執行
  3. plugin process- 插件(如 Flash)
  4. GPU process-GPU渲染進程
  5. Utility process- 各類其餘任務在這個進程中跑。

全部關於chrome 進程的資料能夠在這裏這裏找到。chrome

CefBrowser 和 CefFrame 在browser和render進程中都存在,而且傳遞一系列callbacks。 CefProcessMessage可以在browser進中利用CefBrowser::SendProcessMessage 函數發出, 而且在CefClient::OnProcessMessageRecieved 和CefRenderProcessHandler::OnProcessMessageRecieved 接收。瀏覽器

重要的細節

CEF3 有以下幾個比較重要的類:異步

  • CefMainDelegate - 用於普通進程的邏輯過程
  • CefContentClient- 在普通進程 展示Content Api的回調。
  • CefContext-在browser進程中,展示全局的CEF上下文。 一個單獨的CefContext對象時由CefInitialize()創建,有CefShutdown銷燬。
  • CefBrowserMainParts- browser 進程的邏輯
  • CefContentBrowserClient-在browser 進程展示Content Api的回調。
  • CefBrowserHostImpl-是CefBrowserHost 的實現
  • CefContentRendererClient- 在render 進程中展示Content Api的回調
  • CefBrowserImpl- CefBrowser的實現者
相關文章
相關標籤/搜索