Skip to content

进程模型

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。
  • 数据必须可序列化,不传递函数、类实例、数据库连接等对象。
  • 耗时任务使用 async Command,避免阻塞核心进程主线程。

基于 MIT 许可发布