CEF GeneralUsage

2016-05-05  本文已影响1237人  董哒哒

CEF GeneralUsage

简介

Chromium Embedded FrameWork(CEF) 是一个基于 Chromium 的开源项目。它与 Chromium 的不同之处在于,Chromium 项目服务于 Chrome 浏览器;而 CEF 则是为第三方程序提供嵌入式浏览器框架。CEF 适用的场合有:

CEF3 是 CEF 的最新版本,它基于 Chromium Content API

本文介绍了使用 CEF3 进行程序开发时所涉及的常见概念。

开始

二进制版本

要体验 CEF,可以先从 这个页面 下载二进制版本。下载完成后解压,有以下几个目录:

二进制版本需要编译才能生成 cefclient.exe 和 cefsimple.exe, 编译方法参考 Tutorial,或者直接查看根目录的 CMakeList.txt 文件。

源代码版本

也可以直接编译 CEF 源码。编译方法参考 BranchesAndBuilding

重要概念

正式开始之前,有几个关于 CEF 的重要概念要先了解一下:

C++ Wrapper

libcef.dll 共享库导出的是 C API。对于需要使用 C++ API 的程序来说,就需要使用 libcef_dll_wrapper 项目来做封装。它会将 C API 封装成 C++ API,然后将 API 链接到客户端程序中。C/C++ API 之间的转换层代码是由 translator 工具自动完成的。

当然,直接使用 C API 也是可以的,具体内容请参考 UsingTheCAPI

进程

CEF3 以多进程的形式运行。主进程(也被叫做 "browser" 进程)负责处理窗口创建、绘制、网络访问等操作,另外宿主程序的业务逻辑也运行在 browser 进程中;Blink 渲染、JavaScript 脚本执行由另一种 "render" 进程负责,默认的 进程模型 会为每个站点创建一个 "render" 进程;其他类型的进程只在需要时创建,比如 "plugin" 进程用于运行插件(比如 Flash);"gpu" 进程用于处理 accelerated compositing

默认情况下,主程序的可执行文件会被多次调用,创建出多个独立的进程,有的是 "browser" 进程,有的是 "render" 进程。程序通过命令行来区分自身代表的是哪种进程,进而执行对应进程的操作。如果可执行文件很大、加载很慢,也可以让 非"browser"进程 通过另一个独立的可执行文件来创建。这种配置需要在 CefSettings.browser_subprocess_path variable 里进行设定,更多信息请参考接下来的 "Application Structure" 章节。

各个进程可以使用 Inter-Process Communication(进程间通信) 机制来交互。browser 和 render 进程里的程序逻辑,通过发送异步消息的方式来通信。

线程

上一篇 下一篇

猜你喜欢

热点阅读