套件概覽
了解 Collaboration SDK 中 Core、History、Thread Comment、Worktree 與 Office Exchange 的公開套件。
本頁協助選擇 Collaboration SDK 套件。先組合核心協同,再加入產品需要的擴充模組,無需安裝所有套件。
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 持久化 |
| Multi-node | @univerjs-pro/collaboration-cluster-redis | 基於 Redis 的 pub/sub 介面卡與 Session Ticket 儲存,用於多節點部署 |
核心伺服器需要 Transport、Endpoint、Service 與一個 Database Adapter。Memory 與 SQLite 實作相同契約,通常擇一使用。多節點部署時,還需要一個 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-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。
Office Exchange
Office Exchange 是結合檔案轉換與 Collaboration Service 的應用程式流程,沒有獨立的協同 Database Adapter。
| 執行環境 | 套件 | 主要職責 |
|---|---|---|
| 瀏覽器 | @univerjs-pro/exchange-client | 提供瀏覽器基礎檔案交換能力 |
| 瀏覽器 | @univerjs-pro/sheets-exchange-client | 提供 Sheet 檔案匯入匯出 |
| Server | @univerjs-pro/exchange-node | 在 Node.js 轉換 Office 檔案與 Univer 資料 |
匯入時,應用程式將轉換資料交給 createUnitFromSnapshot();匯出時,透過 Core Service 讀取已確認修訂版本。檔案、任務及業務 API 仍由應用程式管理。
選擇原則
- 從快速開始的核心套件開始。
- 選擇 Memory、SQLite 或自訂 Core Database Adapter 其中之一。
- 多節點部署時,加上 Redis 的 pub/sub 介面卡與 Session Ticket 儲存。
- 只安裝產品實際使用的擴充套件。
- 即使共用同一 SQLite 檔案,各模組也應建立獨立 Adapter。
你覺得這篇文檔如何?