套件概覽
了解 Collaboration SDK 中 Core、History、Thread Comment、Worktree、File 與 Office Exchange 的公開套件。
本頁協助選擇 Collaboration SDK 套件。先組合核心協同,再加入產品需要的擴充模組,無需安裝所有套件。
Database Adapter、File 與 Office Exchange 的服務端套件以 Apache-2.0 開源,原始碼見 univer-collaboration-sdk-community。它們與其他套件使用相同的套件前綴和版本,安裝方式相同。
Core Collaboration
核心協同提供瀏覽器協同、伺服器協定、OT、修訂版本與持久化的主要流程。
| 執行環境 | 套件 | 主要職責 |
|---|---|---|
| 瀏覽器 | @univerjs-pro/collaboration | 註冊瀏覽器基礎協同能力 |
| 瀏覽器 | @univerjs-pro/collaboration-client | 載入 Unit、提交變更集並維持即時同步 |
| 瀏覽器 | @univerjs-pro/collaboration-client-ui | 提供協同狀態 UI 與樣式 |
| Server | @univerjs-pro/collaboration-transport-node | 接收 Node.js HTTP 與 WebSocket 流量 |
| Server | @univerjs-pro/collaboration-endpoint | 實作 Client 協定、Session、Room 與 Presence |
| Server | @univerjs-pro/collaboration-service | 管理 Unit、OT、修訂版本與核心 Service API |
| 資料庫 | @univerjs-pro/collaboration-database-memory | 用於測試、範例與臨時開發的程序內儲存 |
| 資料庫 | @univerjs-pro/collaboration-database-sqlite | 適用開發、測試、本機及小規模使用的 SQLite 持久化 |
| 資料庫 | @univerjs-pro/collaboration-database-postgres | PostgreSQL 持久化,多個節點共用一個資料庫 |
| Multi-node | @univerjs-pro/collaboration-cluster-redis | 基於 Redis 的 pub/sub 介面卡與 Session Ticket 儲存,用於多節點部署 |
核心伺服器需要 Transport、Endpoint、Service 與一個 Database Adapter。Memory、SQLite 與 PostgreSQL 實作相同契約,通常擇一使用。多節點部署時,還需要一個 pub/sub 介面卡與一個共用的 Session Ticket 儲存。兩者的契約(IPubSubAdapter、ISessionTicketStore)由 Endpoint 定義,SDK 提供 Redis 實作。
History
History 根據核心 Unit 建立與變更集提交事件建立版本歷史索引。
| 執行環境 | 套件 | 主要職責 |
|---|---|---|
| 瀏覽器 | 重用核心 Client/UI | 顯示與讀取歷史項目 |
| Server | @univerjs-pro/collaboration-history-service | 建立與查詢歷史索引 |
| Server | @univerjs-pro/collaboration-history-endpoint | 為 Client 提供 History 協定 |
| 資料庫 | @univerjs-pro/collaboration-history-database-memory | History 索引的程序內儲存 |
| 資料庫 | @univerjs-pro/collaboration-history-database-sqlite | 儲存衍生的 History 索引 |
歷史資料是可重建的衍生索引,Unit 內容仍以核心變更集為準。
Thread Comment
Thread Comment 管理 Sheets 與 Docs 的留言本文、回覆及解決狀態。
| 執行環境 | 套件 | 主要職責 |
|---|---|---|
| 瀏覽器 | 重用核心協同套件 | 使用 Comment Client 與 UI 能力 |
| Server | @univerjs-pro/collaboration-comment-service | 管理留言操作與 commentCommitted 事件 |
| Server | @univerjs-pro/collaboration-comment-endpoint | 提供留言協定,透過 Unit Room 發布更新 |
| 資料庫 | @univerjs-pro/collaboration-comment-database-memory | 程序內留言儲存 |
| 資料庫 | @univerjs-pro/collaboration-comment-database-sqlite | SQLite 留言持久化 |
Comment Adapter 儲存留言資料。隨內容移動的錨點仍屬於核心快照與變更集。
Worktree
Worktree 提供隔離草稿、狀態轉換與逐 Unit 合併。
| 執行環境 | 套件 | 主要職責 |
|---|---|---|
| 瀏覽器 | @univerjs-pro/collaboration-worktree-client | 接入 Worktree 草稿、狀態與合併能力 |
| Server | @univerjs-pro/collaboration-worktree-service | 管理草稿變更集、狀態與合併 |
| Server | @univerjs-pro/collaboration-worktree-endpoint | 提供 Worktree Client 協定能力 |
| 資料庫 | @univerjs-pro/collaboration-worktree-database-memory | 程序內 Worktree 儲存 |
| 資料庫 | @univerjs-pro/collaboration-worktree-database-sqlite | SQLite Worktree 持久化 |
Worktree Service 最終透過 Core Service 合併到主幹,因此兩個 Service 邊界都須設定 Middleware。
File
File 儲存 Univer 用戶端上傳的二進位檔案:插入 Unit 的圖片與附件,以及匯入匯出的來源檔與結果檔。Unit 資料只記錄檔案 ID。
| 執行環境 | 套件 | 主要職責 |
|---|---|---|
| 瀏覽器 | 重用 Core Collaboration Client | 上傳圖片與附件,依檔案 ID 換取下載網址 |
| Server | @univerjs-pro/collaboration-file-service | 執行檔案歸屬規則、Middleware 與暫存檔清理 |
| Server | @univerjs-pro/collaboration-file-endpoint | 提供上傳、sign-url 與下載路由 |
| 資料庫 | @univerjs-pro/collaboration-file-memory | 中繼資料與內容的程序內儲存 |
| 資料庫 | @univerjs-pro/collaboration-file-database-sqlite | 檔案中繼資料的 SQLite 持久化 |
| 資料庫 | @univerjs-pro/collaboration-file-database-postgres | 檔案中繼資料的 PostgreSQL 持久化 |
| 儲存 | @univerjs-pro/collaboration-file-blob-local | 檔案內容儲存在本機目錄 |
| 儲存 | @univerjs-pro/collaboration-file-blob-s3 | 檔案內容儲存在 S3 相容物件儲存,可簽發直連網址 |
中繼資料與內容是兩個獨立契約,可以分別選擇實作,例如中繼資料放資料庫、內容放物件儲存。
Office Exchange
Office Exchange 在 Office 檔案與協同 Unit 之間匯入匯出,來源檔與結果檔由 File 儲存。
| 執行環境 | 套件 | 主要職責 |
|---|---|---|
| 瀏覽器 | @univerjs-pro/exchange-client | 提供瀏覽器基礎檔案交換能力 |
| 瀏覽器 | @univerjs-pro/sheets-exchange-client | 提供 Sheet 檔案匯入匯出 |
| Server | @univerjs-pro/collaboration-exchange-service | 管理匯入匯出 task、Middleware 與 Unit 的建立和讀取 |
| Server | @univerjs-pro/collaboration-exchange-endpoint | 提供匯入、匯出與 task 查詢路由 |
| Server | @univerjs-pro/exchange-node | 在 Node.js 轉換 Office 檔案與 Univer 資料 |
Exchange Service 透過 Core Service 建立和讀取 Unit,透過 File Service 讀寫檔案,因此與 Core 和 File 一起組裝。
選擇原則
- 從快速開始的核心套件開始。
- 選擇 Memory、SQLite、PostgreSQL 或自訂 Core Database Adapter 其中之一。
- 多節點部署時,加上 Redis 的 pub/sub 介面卡與 Session Ticket 儲存。
- 只安裝產品實際使用的擴充套件。
- 需要圖片、附件或匯入匯出時,先組裝 File,再按需加入 Office Exchange。
- 即使共用同一個資料庫,各模組也應建立獨立 Adapter。
你覺得這篇文檔如何?