我很感兴趣谷歌文档如何在服务器端存储文档,因为我需要创建类似的应用程序。
它是使用纯 RTF/ODF 文件还是自己的数据库?他们如何使版本控制和撤消/重做功能成为可能?
如果有人知道这个问题,请与我分享。
我很感兴趣谷歌文档如何在服务器端存储文档,因为我需要创建类似的应用程序。
它是使用纯 RTF/ODF 文件还是自己的数据库?他们如何使版本控制和撤消/重做功能成为可能?
如果有人知道这个问题,请与我分享。
专门回答您有关 Google 文档如何工作的问题。他们使用一种名为
您可以使用以下所列的操作转换引擎之一:https ://en.wikipedia.org/wiki/Operational_transform#OT_software
基本思想是每个操作都有一个上下文,例如“删除第五段中的第四个单词”或“在按钮后添加一个输入框”。客户端都通过服务器相互发送操作。客户端和服务器各自保留自己的文档版本,并在它们出现时应用操作。
当操作有重叠的上下文时,有一堆规则可以解决冲突。就像您无法修改已删除的内容一样,因此删除必须在该上下文的一系列并发操作中排在最后。
各种客户端和服务器可能会不同步,因此您需要辅助算法来保持一致性。一种方法是在检测到冲突时从服务器重新加载数据。
——这是我几年前问同样问题时从一位教授那里得到的答案。
您应该使用数据库。也许是一个存储每个文档修订的表格。首先,找到一种方法来确定更新是否重要。您可以在客户端存储微小的更改以进行重做/撤消,然后定期或根据某些条件(例如,用户点击保存),为每个修订创建一个数据库条目(您可以存储更改的字节数、添加的字节数、删除的字节数等内容, ETC。)。
看看 MediaWiki,它是开源的,基本上可以满足您的要求(即,看看他们的表格和代码)。
当用户请求导出文档时,通常会生成并提供 RTF/ODF。
您可能应该考虑使用 Google Drive 的公共 API。详情见链接。