大家可能会想,如果每一个应用都需要把浏览器内核打包进去才能实现Web页面的渲染,要是所有的应用都共享同一个内核就好了,这样我们在分发应用的时候,不需要打包浏览器内核,只需要打包Web页面的资源不就好了吗?所以Tauri就采用了这样的一个方案,WRY是Tauri封装的Webview框架,它在不同操作系统的平台上,封装了系统Webview的实现:在macOS上使用WebKit.WKWebview[2],在Windows上使用Webview2[3],在Linux上使用WebKitGTK[4] 。这样在运行Tauri应用时,会直接使用系统Webview来渲染应用前端的展示 。
API接口对于不会使用Rust的同学来说,学习Rust还是存在着不少的学习成本,但是别担心,在需求简单的情况下,你完全可以不写Rust代码 。Tauri框架提供了如下的一些API,可以方便地在JS中对原生能力进行调用:
- cli:解析应用启动时的命令行参数
- clipboard:对系统剪贴板的读写
- dialog:展示系统文件选择、文件保存弹窗
- event:给后端发出一些事件,后端监听并处理
- fs:文件系统的操作,提供文件读写等能力
- globalShortcut:注册全局快捷键
- http:使用Rust的Http客户端进行网络请求
- notification:系统通知
- os:获取操作系统的一些信息
- path:文件和文件夹路径处理的一些工具
- process:对当前的进程进行一些操作
- shell:对系统shell的一些操作
需要注意的是,上述的一些API,为了保证安全性,对于权限都有着严格的限制,都是默认关闭的状态,需要修改配置以手动启用相关的功能 。
进程模型和Electron类似,Tauri也采用的是多进程的架构(Electron中有主进程和渲染进程),多进程的好处是能够更好更有效地利用现代多核CPU的能力,同时一个组件的崩溃也不会影响到其他组件的运行,因为组件被隔离在了不同的进程中 。如果应用中的某个进程崩溃了,我们只要重启该进程即可 。还可以通过只给每个进程分配足够完成工作的最低限度的权限,来限制潜在漏洞的破坏范围 。这种模式被称为最小权限原则 。
在Tauri中,进程分为两类:主进程和Webview进程 。每个 Tauri 应用程序都有一个主进程,它作为应用程序的入口点,是唯一可以完整访问操作系统的组件 。主进程的主要职责是使用访问权限来创建和管理应用程序窗口、系统托盘菜单或通知 。Tauri 实现了必要的跨平台抽象来简化该操作 。它还通过核心进程路由所有的IPC,通过类似于事件总线的机制,可以方便地拦截、过滤和操作 IPC 消息 。主进程还应该负责管理全局状态,例如数据库连接 。这使你能够轻松地在窗口间同步状态,并保护你的业务敏感数据 。主进程自身并不渲染实际的用户界面,它会直接利用操作系统提供的 WebView 库来实现页面渲染,不同的窗口之间会拥有不同的WebView进程,WebView进程用来负责渲染对应的UI 。

文章插图
IPC模式Brownfield 模式(默认)
Brownfield 软件开发是指在现有或遗留软件系统存在的情况下开发和部署新的软件系统 。[6]使用 Tauri 的最简单和直接的模式,因为 Brownfield 模式会尽最大可能尝试与现有的前端项目兼容 。在这种模式下,无需现有的浏览器前端项目进行任何操作即可迁移 。
隔离模式隔离模式是一种在到达 Tauri 主进程前,拦截并修改由Webview进程发送的 Tauri API 信息的IPC模式,其完全使用 JS 编写 。由隔离模式保障的JS代码即称为隔离应用 。隔离模式的目的是为开发者提供一种保护机制,防止其应用程序被预料之外或恶意的Webview进程调用 Tauri 主进程 。隔离模式的需求来自于前端中不可信任的内容所带来的威胁,常见于需要许多依赖的应用 。隔离模式在设计之初时设想的最大威胁为开发威胁,因为前端构建工具不仅仅由许许多多嵌套很深的依赖组成,而且还有很多嵌套很深的依赖被打包到最终的网页构建产物中 。
- 原理:隔离模式就是在Webview进程和 Tauri 主进程之间注入一个安全的应用程序,用以拦截和修改传入的 IPC 信息 。它使用 <iframe>的沙盒特性,与Webview进程一起安全地执行 JS 代码 。Tauri 在加载页面时会强制执行隔离模式,使所有对 Tauri 主进程的 IPC 调用必须先通过沙盒隔离应用程序 。当消息准备被传递给 Tauri 主进程时,其就会被使用浏览器的 SubtleCrypto API[5]实现加密,并传递回主前端程序,之后,它将会被直接传递给 Tauri 主进程来解密和读取数据 。
推荐阅读
- iOS微信更新,可将小程序放到iPhone桌面,退出群聊保留聊天记录
- originos系统下载官网?origin OS系统如何切换桌面?
- qq音乐网页版怎么开桌面歌词?
- Docker 桌面与 Rancher 桌面
- 最好用的桌面便签软件?桌面便签软件推荐
- 电脑开机后不显示桌面、电脑开机后不显示桌面怎么办?
- 昭襄王之后谁是秦王?秦昭襄王的下一代君王是谁
- 语雀桌面端技术架构实践
- 搭载12代酷睿含显示器2999元真香!战66迷你台式机成为桌面新宠
- 桌面上的回收站图标不见了怎么办 桌面的回收站不见了
