-1

我很感兴趣谷歌文档如何在服务器端存储文档,因为我需要创建类似的应用程序。

它是使用纯 RTF/ODF 文件还是自己的数据库?他们如何使版本控制和撤消/重做功能成为可能?

如果有人知道这个问题,请与我分享。

4

3 回答 3

6

专门回答您有关 Google 文档如何工作的问题。他们使用一种名为

运营转型

您可以使用以下所列的操作转换引擎之一:https ://en.wikipedia.org/wiki/Operational_transform#OT_software

基本思想是每个操作都有一个上下文,例如“删除第五段中的第四个单词”或“在按钮后添加一个输入框”。客户端都通过服务器相互发送操作。客户端和服务器各自保留自己的文档版本,并在它们出现时应用操作。

当操作有重叠的上下文时,有一堆规则可以解决冲突。就像您无法修改已删除的内容一样,因此删除必须在该上下文的一系列并发操作中排在最后。

各种客户端和服务器可能会不同步,因此您需要辅助算法来保持一致性。一种方法是在检测到冲突时从服务器重新加载数据。

——这是我几年前问同样问题时从一位教授那里得到的答案。

于 2014-06-04T03:18:49.877 回答
0

您应该使用数据库。也许是一个存储每个文档修订的表格。首先,找到一种方法来确定更新是否重要。您可以在客户端存储微小的更改以进行重做/撤消,然后定期或根据某些条件(例如,用户点击保存),为每个修订创建一个数据库条目(您可以存储更改的字节数、添加的字节数、删除的字节数等内容, ETC。)。

看看 MediaWiki,它是开源的,基本上可以满足您的要求(即,看看他们的表格和代码)。

当用户请求导出文档时,通常会生成并提供 RTF/ODF。

于 2014-05-30T08:31:09.780 回答
0

您可能应该考虑使用 Google Drive 的公共 API。详情见链接

于 2014-06-04T18:36:48.720 回答