本文档概述了 AppFlowy 的系统架构,涵盖了 Flutter 前端与 Rust 后端之间的分离、主要子系统及其交互方式。本页面侧重于整体结构组织和组件关系。
有关各个子系统的具体详细信息,请参阅:前端架构和应用程序初始化、后端架构和核心服务、数据库和协作系统、视图和文档管理、用户认证和工作区管理。
AppFlowy 采用基于 Flutter 的前端和基于 Rust 的后端之间清晰分离的架构,通过 FFI(外部函数接口)进行连接。该架构支持云端部署和仅本地部署。
来源:frontend/appflowy_flutter/pubspec.yaml16-17 frontend/rust-lib/Cargo.toml1-34 frontend/rust-lib/dart-ffi frontend/rust-lib/lib-dispatch frontend/rust-lib/flowy-core
该系统由几个关键子系统组成,负责处理应用程序的不同方面。
来源:frontend/rust-lib/flowy-database2/src/manager.rs56-91 frontend/rust-lib/flowy-folder frontend/rust-lib/flowy-user frontend/rust-lib/flowy-ai
数据库系统是最复杂的子系统之一,它处理具有多种视图类型(网格、看板、日历)的结构化数据。
来源:frontend/rust-lib/flowy-database2/src/manager.rs56 frontend/rust-lib/flowy-database2/src/services/database/database_editor.rs61-75
文档系统通过基于插件的架构处理富文本编辑,支持不同类型的块。
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart43-74 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/callout/callout_block_component.dart76-109
AppFlowy 在 Flutter 前端使用 BLoC 模式进行状态管理,事件流经 Rust 后端。
协作系统使用 collab 库实现多个客户端之间的实时同步。
后端采用面向服务的架构,具有清晰的职责分离和依赖注入。
| 服务类别 | 组件 | 职责 |
|---|---|---|
| 核心服务 | DatabaseManager, UserManager, FolderManager | 主要业务逻辑和数据管理 |
| 视图服务 | DatabaseViewEditor, DatabaseViews | 视图特定操作和渲染 |
| 协作 | CollabBuilder, CollabIntegrate | 实时同步和数据一致性 |
| AI 服务 | AIManager, LocalAIController | AI 驱动的功能和聊天功能 |
| 存储服务 | StorageService, CollabKVDB | 数据持久化和缓存 |
| 服务器抽象 | AppFlowyServer, 云/本地实现 | 环境无关的服务器操作 |
AppFlowy 支持多平台,具有自适应 UI 和平台特定优化。