介绍
安装
指南
- Engine
- Profile
- Browser
- BrowserView
- 导航
- 内容
- 上下文菜单
- DOM
- JavaScript
- 弹出窗口
- 对话框
- 下载
- Chrome 扩展程序
- 网络
- 缓存
- Cookies
- 代理
- 身份验证
- 权限
- 插件
- 打印
- 密码
- 用户数据配置文件
- 信用卡
- 媒体
- 缩放
- 拼写检查器
- 部署
- Chromium
故障排除
- 日志记录
- 常见异常
- 应用程序不终止
- 视频不播放
- 无法登录 Google 账号
- 用户数据未被储存
- 配色方案
- 启动失败
- Windows 启动缓慢
- 无响应的 .NET 应用程序
- Chromium 进程意外终止
- 意外行为
- Windows 7/8/8.1 停止支持
迁移
架构
这是关于 DotNetBrowser 架构的概述。
概述
DotNetBrowser 库的架构由多个进程组成,例如.NET 应用程序和不同的 Chromium 进程:
以下部分提供了每个进程的详细信息、库的主要组件,并描述了它们的工作原理。
进程
.NET 进程
这是运行 .NET 应用程序的标准 .NET 进程。
Chromium 主进程
这是 Chromium engine 的主进程。 这是由 DotNetBrowser 在您创建一个 IEngine
实例时启动的。
对于每个 IEngine
实例,都使用一个单独的 Chromium 主进程。
Chromium 渲染器进程
此进程包含管理已加载网页的 DOM 和 JavaScript 的 IFrame
实例。 当您将 IBrowser
导航到具有不同域的网页时,该进程由 Chromium 引擎启动。
Chromium GPU 进程
此进程使用 GPU 渲染在不同 Chromium 渲染器进程中加载的网页内容。
进程间通信
使用进程间通信 (IPC) 执行不同进程之间的通信。 使用进程间通信 (IPC) 执行不同进程之间的通信。
为了在 .NET 和 Chromium 进程之间传输数据,DotNetBrowser 使用基于套接字和共享内存的自己的 IPC 实现。 Chromium 进程之间的通信是使用 Chromium IPC 实现的。
主要组件
IEngine
IEngine
实例管理 Chromium 主进程的生命周期,并提供访问与默认 Profile
相关的核心 Chromium 功能,例如缩放、代理、缓存、Cookie、插件、下载等。
所有与引擎相关的操作均通过 IEngine
接口执行。 引擎是库对象层次结构中的顶级对象。 使用该库的任何操作都以创建 IEngine
实例开始。
有关创建和使用 IEngine
实例的详细说明,请参阅引擎指南。
配置文件
表示 Chromium 配置文件。 它允许单独保存所有浏览器数据,例如历史记录、cookie、缓存、代理设置、拼写检查器配置等。 每个 IEngine
都有一个在 Engine
初始化期间自动创建的默认配置文件。 默认配置文件无法被移除。
您可以使用 Profiles
服务创建新的配置文件并在不需要时将其删除。
配置文件的历史记录、cookie、缓存等文件存储在用户数据目录中。 如果您使用用户数据目录配置 IEngine
并创建一个配置文件,它将存储在用户数据目录中,并在应用程序重启后恢复。
在配置文件指南中阅读有关配置文件的更多信息。
浏览器
这是一个网页浏览器,可用于执行多项操作,例如:
- 加载网页或本地 HTML 文件;
- 在已加载的网页上查找文本;
- 修改缩放级别;
- 启用或静音音频;
- 获取有关加载进度的通知;
- 调度键盘和鼠标事件。
所有与浏览器的操作都是通过IBrowser
接口执行的。 每个 IBrowser
实例都绑定到 Profile
。 当 Profile
被删除、其父级 IEngine
实例崩溃或被应用程序处置时,IBrowser
实例会自动释放。
有关如何创建和使用 IBrowser
实例的详细信息,请参阅浏览器指南。
框架
在 IBrowser
实例中加载的任何网页都有一个主 IFrame
实例。 此 IFrame
可能有子框架。 您可以使用 IFrame
实例来访问和使用 DOM 和 JavaScript。 当网页被卸载时,它的主 IFrame
实例和所有的子框架都会被自动释放。
工作原理
创建引擎
当您创建一个 IEngine
实例时,库会执行以下操作:
- 启动 Chromium Main 进程和 GPU 进程。
- 在 Chromium 主进程中初始化 Chromium 引擎。
- 初始化默认配置文件。
- 在 .NET 和 Chromium 主进程之间建立 IPC 连接。
如果您创建两个 IEngine
实例,则会为每个实例启动单独的 Chromium Main 进程和 GPU 进程。 请参阅以下示例:
创建浏览器
当您创建一个 IBrowser
实例时,该库会自动在其中加载一个 about:blank
网页。 作为结果, Chromium 渲染器 进程开始处理网页上的所有 DOM 和 JavaScript:
如果您将 IBrowser
实例导航到一个网页,该网页会加载到这个 Chromium 渲染器 进程中。 如果您稍后从不同域导航到网页,该网页将会在自动启动的不同 Chromium 渲染器进程实例中加载。 请注意,处理先前网页内容的 Chromium 渲染器 进程会被终止。
浏览器处理
当您释放 IBrowser
实例时,相应的 Chromium 渲染器 进程会自动终止。 因此,所有在已终止进程中运行的 IFrame
实例也将自动处理:
引擎处理
当您处理 IEngine
实例时,库会执行以下操作:
- 关闭 .NET 和 Chromium 主进程之间现有的 IPC 连接。
- Chromium Main 进程中处理 Chromium 引擎。
- 终止 Chromium 主进程和 GPU 进程。