2024年3月30日发(作者:)

CEF架构的概述

背景:

CEF:chromium embedded Framework是由Marshall Greenblatt在08年成立的一

个开源项目,目的是开发一个基于Google Chromium项目的Web browser控制器。CEF

目前支持大多数编程语言和操作系统,并可以轻松的整合新的和已存在的应用。设计的目

的也是为了效率/性能和方便使用。基础的框架包括了借助原生库的C/C++接口,这样将

主机的应用与chromium和WebKit隔离开来。它提供了浏览器控制和主机应用程序(包括

支持自定义插件、协议、JavaScript对象和JavaScript扩展)之间紧密的集成。主机应用程

序可以有选择地控制资源加载、导航、菜单、打印等,当利用了相同的性能和Google

Chrome浏览器具备的HTML5技术。

依赖/相关:

CEF项目依靠一堆其它由第三方维护的项目,主要又以下:

Chromium:基础,网络堆栈,线程,消息机制,log,进程控制,生成Web browser。

WebKit:提供DOM解析,布局,事件处理,渲染,HTML5JS的API。

V8:JS引擎。

Skia:2D图形库。

Angle:3D图形转换,和DirectX有关。

版本:

3个版本:

 CEF1,单进程工具调用chromium Webkit API

 CEF2,多进程工具建立在Chromium browser

 CEF3,多进程工具调用Chromium Content API

通用API用法:

所有版本的CEF都公开一个简单好用的API(让用户从Chromium和Webkit复杂的代

码中分隔开来),详细如下:

1. 调用CefInitialize()对CEF初始化。

2. 调用CefRunMessageLoop() or CefDoMessageLoopWork()来在UI消息上处理

事务。

3. 调用CreateBrowser() or CreateBrowserSync()并传递一个CefClient事例来创造

一个browser窗口。

4. 在程序退出前调用CefShutdown()来关闭CEF。