diff --git a/src/content/docs/zh-cn/concept/Inter-Process Communication/brownfield.md b/src/content/docs/zh-cn/concept/Inter-Process Communication/brownfield.md index 436c57c0c5..b60de5c6d8 100644 --- a/src/content/docs/zh-cn/concept/Inter-Process Communication/brownfield.md +++ b/src/content/docs/zh-cn/concept/Inter-Process Communication/brownfield.md @@ -4,7 +4,7 @@ title: Brownfield 模式 _**这是默认模式。**_ -这是使用 Tauri 的最简单和最直接的模式,因为本模式会尽最大可能尝试与现有的前端项目兼容。简而言之,它尽量不要求额外的配置,跟现有的 web 前端应用在浏览器中使用的方式保持一致。但并不是 _**所有**_ 在现有浏览器应用中有效的功能都会开箱即用。 +Brownfield 模式是使用 Tauri 最简单、最直接的方式,因为它旨在最大限度地兼容现有的前端项目。简而言之,它几乎不需要额外配置,让你能够像在浏览器中运行 Web 应用一样无缝开发。不过需要注意,**并非所有**能在浏览器中运行的功能都支持“开箱即用”。 如果你不熟悉 Brownfield 软件开发模式,可以阅读 [Brownfield 维基百科]。对 Tauri 而言,现有软件特指现代浏览器支持的特性与行为规范,而非传统遗留系统。 diff --git a/src/content/docs/zh-cn/concept/Inter-Process Communication/index.mdx b/src/content/docs/zh-cn/concept/Inter-Process Communication/index.mdx index 3a90bfe69c..8e0ce9481e 100644 --- a/src/content/docs/zh-cn/concept/Inter-Process Communication/index.mdx +++ b/src/content/docs/zh-cn/concept/Inter-Process Communication/index.mdx @@ -23,15 +23,15 @@ import { CardGrid, LinkCard } from '@astrojs/starlight/components'; /> -Tauri 使用一种特定风格的进程间通信,称为[异步消息传递],其中进程通过一些简单的数据表示交换*请求*和*响应*。对于任何有 Web 开发经验的人来说,消息传递应该听起来很熟悉,因为这种范式用于互联网的客户端-服务器通信。 +Tauri 使用一种特定风格的进程间通信,称为[异步消息传递],进程间通过简单的数据载体交换“请求”和“响应”。对于有 Web 开发经验的人来说,消息传递机制一定不陌生,因为互联网的客户端-服务器(Client-Server)通信正是采用了这种范式。 -消息传递是一种比共享内存或直接函数访问更安全的技术,因为接收方可以自由地拒绝或丢弃请求。例如,如果Tauri核心进程确定某个请求是恶意的,它将简单地丢弃该请求,并且不会执行相应的函数。 +相比于共享内存或直接调用函数,消息传递是一种更安全的技术。因为接收方拥有主动权,可以自由地过滤或丢弃非法请求。例如,如果 Tauri 核心进程判断某个 IPC 请求具有恶意,它会直接丢弃该消息,而绝不会去执行相应的函数。 接下来,我们将更详细地解释 Tauri 的两个 IPC 原语——`事件`和`命令`。 ## 事件 -事件是一次性、单向的 IPC 消息,最适合用于通信生命周期事件和状态变化。与[命令](#命令)不同,事件可以由前端*和* Tauri 核心发出。 +事件是一次性、单向的 IPC 消息,最适合用于通信生命周期事件和状态变化。与[命令](#命令)不同,事件可以由前端*和* Tauri 核心双向发起。
@@ -56,7 +56,7 @@ Core -> Frontend: "Event"{style.animated: true} ## 命令 -Tauri 还提供了一种类似于[外部函数接口]的抽象,建立在IPC消息之上[^1]。主要 API `invoke` 类似于浏览器的`fetch` API,允许前端调用 Rust 函数、传递参数并接收数据。 +Tauri 还提供了一种类似于[外部函数接口]的抽象,建立在IPC消息之上[^1]。核心 API `invoke` 的用法类似于浏览器的`fetch` API,允许前端调用 Rust 函数、传递参数并接收数据。 由于该机制在底层使用类似 [JSON-RPC] 的协议来序列化请求和响应,因此所有参数和返回数据必须能够序列化为 JSON。 @@ -86,7 +86,7 @@ Core -> Frontend: "Response"{style.animated: true}
命令调用中涉及的 IPC 消息。
-[^1]: 由于命令在底层仍然使用消息传递,因此它们没有真实 FFI 接口所面临的安全隐患。 +[^1]: 因为命令在底层依然遵循消息传递机制,所以它们规避了真实 FFI 接口常见的内存安全隐患。 [异步消息传递]: https://en.wikipedia.org/wiki/Message_passing#Asynchronous_message_passing [json-rpc]: https://www.jsonrpc.org diff --git a/src/content/docs/zh-cn/concept/Inter-Process Communication/isolation.md b/src/content/docs/zh-cn/concept/Inter-Process Communication/isolation.md index e0f7e0cab5..a96f9c0e11 100644 --- a/src/content/docs/zh-cn/concept/Inter-Process Communication/isolation.md +++ b/src/content/docs/zh-cn/concept/Inter-Process Communication/isolation.md @@ -7,13 +7,13 @@ i18nReady: true ## 为什么这么做 -隔离模式向开发者提供一种避免程序中前端不必要或恶意地调用 Tauri Core 的机制。这一需求源自运行在前端的不受信任内容的威胁,有大量依赖的应用经常遇到这种情形。请查看 [Security: Threat Models] 来了解应用程序可能遇到的威胁的来源。 +隔离模式为开发者提供了一种防御机制,防止前端意外或恶意地调用 Tauri 核心。这一需求源自运行在前端的不受信任内容的威胁,有大量依赖的应用经常遇到这种情形。请查看 [security: threat models] 来了解应用程序可能遇到的威胁的来源。 -隔离模式在设计时考虑的最大的威胁模型是**开发威胁**(Development Threats)。除了许多前端构建时工具所包括的数十(甚至数百)个通常是深度嵌套的依赖,一个复杂的应用也还可能捆绑大量(通常也是深度嵌套的)依赖到最终输出。 +隔离模式设计的初衷是为了应对**开发环境威胁**(Development Threats)。现代前端应用除了构建工具自带的成百上千个深度嵌套依赖外,最终产物中通常也会捆绑大量复杂的第三方库。 -## 何时需要 +## 适用场景 -Tauri 强烈推荐只要有可能就使用隔离模式。因为隔离应用程序截获来自前端的***所有***信息,它*始终*可以被使用。 +Tauri 强烈建议只要条件允许就开启隔离模式。由于隔离应用会拦截来自前端的***所有***通信,因此它在任何场景下都有效。 Tauri 同时也强烈推荐在使用外部 Tauri API 时加强应用的安全性。作为开发者,你可以使用安全隔离应用程序尝试验证 IPC 输入,以确保它们在某些预期参数范围内。例如,你可能需要检查读取或写入文件的调用是否尝试访问应用程序预期位置之外的路径。另一个例子是确保 Tauri API 的 HTTP 获取调用仅将 Origin 标头设置为应用程序预期的值。 @@ -21,13 +21,13 @@ Tauri 同时也强烈推荐在使用外部 Tauri API 时加强应用的安全性 ## 如何使用 -隔离模式的核心在于在前端和 Tauri Core 之间注入一个安全的应用程序,用于拦截和修改传入的 IPC 消息。它利用 `