主题
进程模型
Tauri 采用多进程架构。核心进程拥有系统权限,界面运行在隔离的 WebView 进程中。
核心进程
核心进程是应用入口,由 Rust 实现,是唯一拥有完整操作系统权限的部分。
常见职责:
- 创建和管理窗口、菜单、托盘、通知。
- 注册 Command,向前端提供受控能力。
- 管理全局状态,例如配置、数据库连接。
- 过滤和转发所有 IPC 消息。
核心进程数量通常只有一个。
WebView 进程
每个窗口对应一个 WebView 进程。它负责执行 HTML、CSS 和 JavaScript,接近普通浏览器页面。
常见职责:
- 渲染 Vue、React、Svelte 等前端应用。
- 处理用户交互和页面状态。
- 通过
invoke或插件 API 请求核心进程能力。
WebView 不应直接访问文件系统、数据库或保存密钥。业务敏感逻辑放在核心进程。
数据流
典型数据流:
bash
frontend -> invoke(command) -> Core -> handler/plugin -> resource例如读取本地配置:
bash
页面点击按钮
-> invoke('settings_get')
-> 核心进程校验权限与参数
-> Rust 读取文件或数据库
-> 返回可序列化结果进程边界
- UI 状态放在前端。
- 系统资源访问放在核心进程。
- 跨边界通信通过明确的 Command 或 Event。
- 数据必须可序列化,不传递函数、类实例、数据库连接等对象。
- 耗时任务使用
asyncCommand,避免阻塞核心进程主线程。
