# 原理概述

WPS WebOffice 文档的预览和编辑需要对实体文件进行读取和存储。为了给接入方业务提供最大的灵活度，**WebOffice 并没有耦合文件系统相关的逻辑**，并以在线网页为显示载体。基于此，WebOffice 提供了回调服务和 WebOffice SDK 来解决WebOffice 服务和文件系统之间的通信，以及实现接入方业务前端网页中的文档初始化操作。

### 🗃基于以上两点，接入 WebOffice 服务的三个要素如下：
- 创建 WebOffice 应用，此应用为在线文档编辑服务的业务对象，是您进行后续接入步骤的前提
- 服务端实现回调服务，完成 WebOffice 与文件系统之间的通讯
- 前端集成 WebOffice SDK，在您的网页中实现文档的显示以及后续 API 的调用

WebOffice 服务、网页应用、开发者的服务端（回调服务）的交互如下图所示：
![工作原理](https://cloudcdn.qwps.cn/open/kingsoft_open_docs/solutions_img/0cda34f068.png)

WebOffice 系统内的文档组件，**单个文档进程**最多支持 200 人在线同时编辑，每个用户的改动，都会通过广播的形式更新所有在线用户（预览或编辑人员）的文档内容。组件会自动触发保存版本，开发者可选择保存或者不保存，不用担心版本丢失的情况，并且有较高的灵活性。

每个文档在系统内部对应一个具体的进程，所有编辑或预览该文档的用户都会导向该进程中。进程利用内核库对文档进行处理，并获取预览数据返回给前端展示。

WebOffice 需要与外部文件系统（开发者的存储系统，下文用drive代替）进行交互，从而使得用户的文件存储 与 WebOffice 服务进行解耦，用户可自行决定文件的存储方式（金山云文档、第三方对象存储等云存储设施），WebOffice 从中获取**文件信息**、**用户信息**、**用户权限** 等，并且通过已定义好的**回调接口**将新版文件回传给 **drive**。由于不同的 drive 所提供的接口不一样，我们会有 provider 模块(专门与文件管理模块通信)，将 WebOffice 通过 provider 与 drive 进行通信。

### 🎉WebOffice 服务端与开发者回调服务，时序图如下：

![工作原理](https://cloudcdn.qwps.cn/open/kingsoft_open_docs/solutions_img/e0428185fb.svg)