如何实现可多人协作的“在线 excel”系统?

2019-12-09 21:40:45 +08:00
 powertoolsteam

多人协作在线文档的概念,最早由 Google Docs 带入中国。但实际上,在日常工作中,与团队的其他人进行协作是一种在常见不过的工作方式。

由于工作分工、工作进展的不同,团队内部的信息往往需要及时同步,然而伴随着团队经营规模的不断扩大,在线协同、多人协作,以及软件项目管理等问题将会接踵而至,成为制约企业高效发展的瓶颈。

这些问题,通常表现为:

  1. 跨部门、地区协作不便
  2. 过度依赖文件夹共享的形式,不能确保文档的安全性
  3. 没法纪录和体现职工对文本文档的意见和评价
  4. 文档记录发生变更时,无法及时通知到相关部门和员工
  5. 文档无法在线协同编辑,缺失必要的流程管控
  6. 多人共同编辑一个文档,无法留存修改记录和历史版本

针对上述问题,目前最佳的解决方案是:使用一款可多人在线协同办公的软件或工具。市面上,这类软件有很多,比如国外的 Google Docs、Office365,以及国内的腾讯文档、石墨文档、有道云协作等。

本文将不再过多赘述这类成品软件,而是深入协同办公系统的实现原理,从企业 IT 管理者的角度出发,深入研究多人协作的形式、基础和难点,分析一款开发工具应具备怎样的特点,才是实现多人协作“在线 excel”系统的关键。

以下内容,节选自葡萄城公开课《如何实现可多人协作的“在线 excel”系统?》,欢迎大家提前预约,届时观看: https://live.vhall.com/483759540

多人协作的形式:历史与发展

多人协作的历史十分悠久,起源于静态的多人协作模式,即每个人先完成自己的工作,然后再进行汇总。

静态的多人协作模式

从静态到动态

静态多人协作的成本,会随着加入人数和项目的复杂度呈几何级数的增长。因此,对于企业来说,急需一种无协作动作、唯一版本、版本可控的无协作成本模式,即动态多人协作模式。

动态的多人协作

多人协作的基础:原理与架构

任何信息,无论其是什么展现形式,如果要做到多人实时编辑与展现,只需要实现以下三步而已:

  1. 操作化
  2. 可传输
  3. 可还原

操作化

操作化,指任何信息都可以转换为一组操作的集合。很容易理解,但它仍有不少值得思考的点:

1. 分割与组合

2. 绝对操作与相对操作

3. 使用一款开发工具:SpreadJS,实现操作化的优势:

可传输

可传输,就是指操作有办法通过网络传输给其他终端。实现动态多人协作,需要考虑以下几点:

1. 传输内容

2. 网络协议

3. QoS ( Quality of Service,服务质量)

可还原

可还原,就是指接收到来自网络的操作消息后,可以在本地完全一致地再次执行该操作。可还原包括了:

1. 绝对操作的还原

2. 相对操作的还原

3. 本地操作的还原

4. 无入侵的还原

多人协作的难点:乱序与冲突

乱序

乱序的表现形式如下图,小明在客户端执行了一系列操作,传递到服务器时发生乱序,导致小花看到了截然不同的信息:

为了解决乱序问题,可以尝试以下方法:

  1. 用性能换取顺序正确——基于协议
  2. 用性能换取顺序正确——基于回执

两种方法的优缺点

1. 基于协议

2. 基于回执

基于乱序处理方法的总结

网络不是绝对可靠的,为了实现相对可靠,需要付出一定的代价,企业需要考虑的是:如何衡量所付出的代价与产出成正比。

冲突

比乱序更高级的一种表现形式,存在多向、多维度等问题。

如何避免错误的蔓延?

原则:任何一次不一致,都会导致后续的操作基于错误的信息进行,从而不断扩大错误,造成无法收拾的结果。因此,不一致是不能被容忍的。 解决办法:

  1. 严格一致性:独占
  2. 最终一致性:检查与修复
  3. 非技术手段:设计与提示

严格的一致性

独占就是同一时间同一范围只能由一人操作。

1. 范围(以 SpreadJS 为例)

2. 排他性

3. 优点

4. 缺点

5. SpreadJS 提供的支持

最终一致性

基于唯一正确顺序,察觉客户端的错误,撤销错误操作后重新执行正确的操作。

1. 唯一正确

2. 察觉错误

3. 撤销错误

4. 重新执行

非技术手段

技术手段追求错误 0 发生,而非技术手段则可以降低错误发生的可能性。

1. 选中框

2. 协作设计

3. 单向协作

针对多人协作难点的总结

首先,可以明确一点:SpreadJS 完全可以用作多人协作系统开发的组件。原因在于:

多人协作表格的本质:

多人协作表格的特点:

对 SpreadJS 这类开发工具 /组件的展望与期待

  1. SpreadJS 已经可以很好地支持多人协作的最终一致性。如果能支持多人多撤销队列,或者撤销重做自定义,那么就可以给用户提供更加易用且多样化的体验效果,从此丝般顺滑不是梦。
  2. SpreadJS 的绝大部分功能是支持命令的,这使得操作化变得更简单。如果 SpreadJS 能开放命令自定义,便可以让自主控制颗粒度成为可能,用户可以针对具体的业务逻辑做出更加精细化的操作转换,大幅提高协作效率。
  3. SpreadJS 不仅在数据录入、数据填报等方面表现出强大的功能,其各类统计分析与图形化手段也是一个不少,一旦明年的透视表功能上线,使用 SpreadJS 开发在线协同系统的数据商业价值将更易体现,用户将体验到“表格”无限的魅力与威力。
  4. 表格在多人协作中的数据量增长速度比单人使用时快得多,希望 SpreadJS 可以支持更大的数据量,尤其是在大数据量情况下仍旧保持操作的性能与体验。

以上就是本期公开课《如何实现可多人协作的“在线 excel”系统?》的部分摘要,如果您对在线协作系统的开发感兴趣,欢迎点击预约,届时收看: https://live.vhall.com/483759540

3737 次点击
所在节点    推广
3 条回复
gavindexu
2019-12-10 20:52:08 +08:00
dzz + only office,免费的😂
问题就在于不能各自筛选各自的内容
Eempty
2019-12-10 21:18:46 +08:00
quip
Biwood
2019-12-10 21:23:05 +08:00
看了楼主的发帖记录,可以称得上是推广狂魔

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/627419

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX