跳到主要內容
Tauri

程序模型

Tauri 採用類似於 Electron 或許多現代網路瀏覽器的多程序架構。本指南探討此設計選擇背後的原因,以及為何它對於編寫安全應用程式至關重要。

為何需要多個程序?

在 GUI 應用程式的早期,常見的做法是使用單一程序來執行運算、繪製介面以及回應使用者輸入。您可能可以猜到,這表示長時間運行的昂貴運算會導致使用者介面沒有回應,更糟的是,一個應用程式組件中的故障會導致整個應用程式崩潰。

顯然需要更具彈性的架構,應用程式開始在不同的程序中運行不同的組件。這能更佳地利用現代多核心 CPU,並建立更安全的應用程式。一個組件中的崩潰不再影響整個系統,因為組件隔離在不同的程序上。如果程序進入無效狀態,我們可以輕鬆地重新啟動它。

我們還可以透過僅向每個程序發放最少量的權限來限制潛在漏洞的爆破範圍,權限只要足夠讓它們完成工作即可。這種模式稱為「最小權限原則」,您在現實世界中一直看到它。如果您請園丁來修剪樹籬,您會給他們您花園的鑰匙。您**不會**給他們您房子的鑰匙;他們為什麼需要進入房屋的權限?相同的概念適用於電腦程式。我們給它們的權限越少,它們在被入侵時造成的危害就越小。

核心程序

每個 Tauri 應用程式都有一個核心程序,它充當應用程式的進入點,並且是唯一具有作業系統完整存取權限的組件。

核心程序的主要職責是使用該存取權限來建立和協調應用程式視窗、系統 Tray 選單或通知。Tauri 實作了必要的跨平台抽象化,使這一切變得容易。它還透過核心程序路由所有「跨進程通訊」,讓您可以在一個中心位置攔截、篩選和操作 IPC 訊息。

核心程序也應負責管理全域狀態,例如設定或資料庫連線。這讓您可以輕鬆地在視窗之間同步狀態,並保護您的業務敏感資料免於前端的窺探。

我們選擇 Rust 來實作 Tauri,因為它具有「所有權」的概念,保證了記憶體安全性的同時,也保留了卓越的效能。

Diagram
Tauri 程序模型的簡化表示。單一核心程序管理一個或多個 WebView 程序。

WebView 程序

核心程序本身不呈現實際的使用者介面 (UI);它啟動 WebView 程序,這些程序利用作業系統提供的 WebView 函式庫。WebView 是一個類似瀏覽器的環境,可執行您的 HTML、CSS 和 JavaScript。

這表示您在傳統 Web 開發中使用的大多數技術和工具都可以用來建立 Tauri 應用程式。例如,許多 Tauri 範例都是使用 Svelte 前端框架和 Vite 捆綁器編寫的。

安全性最佳實務也適用;例如,您必須始終清理使用者輸入,永遠不要在前端處理機密,並且最好將盡可能多的業務邏輯延遲到核心程序,以縮小您的攻擊面。

與其他類似解決方案不同,WebView 函式庫**未**包含在您的最終可執行檔中,而是在執行階段動態連結1。這使您的應用程式**顯著**更小,但也表示您需要像傳統 Web 開發一樣,將平台差異牢記在心。

註腳

  1. 目前,Tauri 在 Windows 上使用 Microsoft Edge WebView2,在 macOS 上使用 WKWebView,在 Linux 上使用 webkitgtk。


© 2025 Tauri Contributors。CC-BY / MIT