彩票走势图

SpreadJS实现多人协作“在线excel”系统的优势(三):多人协作的难点及的优势

转帖|使用教程|编辑:莫成敏|2020-03-06 13:41:21.847|阅读 512 次

概述:本文主要介绍多人协作的难点:乱序与冲突、SpreadJS作为实现多人协作“在线excel”系统的巨大优势是什么?以及对SpreadJS这类开发工具/组件的展望与期待​等内容。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

纯前端表格控件SpreadJS,可满足 .NET、Java、App 等应用程序中的 Web Excel 组件开发、数据填报、在线文档、图表公式联动、类 Excel UI 设计等业务场景,并在数据可视化、Excel 导入导出、公式引用、数据绑定、框架集成中无需大量代码开发和测试,极大降低了企业研发成本和项目交付风险。

点击下载SpreadJS正式版

本系列教程深入协同办公系统的实现原理,从企业IT管理者的角度出发,深入研究多人协作的形式、基础和难点,分析一款开发工具应具备怎样的特点,才是实现多人协作“在线excel”系统的关键。本文主要介绍多人协作的难点:乱序与冲突、SpreadJS作为实现多人协作“在线excel”系统的巨大优势是什么?以及对SpreadJS这类开发工具/组件的展望与期待等内容。

本教程包括以下几个部分:
  • 多人协作的形式:历史与发展
  • 多人协作的基础:原理与架构
  • 多人协作的难点:乱序与冲突(本文内容)
  • SpreadJS作为实现多人协作“在线excel”系统的巨大优势是什么?(本文内容)
  • 对SpreadJS这类开发工具/组件的展望与期待(本文内容)

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

乱序

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


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

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


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


两种方法的优缺点

1、基于协议

  • 优点:可靠,历经考验;简单,无需开发
  • 缺点:资源开销高;必须整套使用

2、基于回执

  • 优点:自主可控,按需开发;资源开销可控
  • 缺点:需要自己投入开发;应用层逻辑控制使得网络复杂度向外蔓延;复杂度带来维护成本

基于乱序处理方法的总结

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

冲突

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


如何避免错误的蔓延?

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

解决办法:

1、严格一致性:独占

2、最终一致性:检查与修复

3、非技术手段:设计与提示

严格的一致性

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

1、范围(以SpreadJS为例):整个表格,类似VSS;工作表;单元格范围。

2、排他性:独占冲突时,必有一方被弹开;直到占有者解开,不然无法占用;占用前无法操作;原理和锁基本一致。

3、优点:可以确保严格一致性,不会产生多版本的错误累积;比起修复恢复这类弥补手段,一开始就不出错的成本最低;逻辑清楚简单,开发维护成本低。

4、缺点:静态协作的味道;独占动作严重影响体验;大幅降低协作效率。

5、SpreadJS提供的支持:锁定工作表;锁定单元格。

最终一致性

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

1、唯一正确:服务器到达顺序;协作边界分流;P2P+选举算法

2、察觉错误:服务器回执id;服务器回执操作,MS

3、撤销错误:撤销到错误发生前的一步操作的结果;利用SpreadJS的撤销功能;利用操作版本快照

4、重新执行:操作队列需保存;区分好无感知执行与显式执行

非技术手段

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

1、选中框

  • 非常重要但不显眼
  • 人性化的独占
  • 操作的预期
  • 协作感
  • SpreadJS提供高度可自定义的边框

2、协作设计

  • 设计协作区域与合并手段
  • 设置权限
  • SpreadJS提供几乎Excel的所有公式
  • SpreadJS提供了工作表和单元格锁定功能

3、单向协作

  • 区分单向与双向协作的场景
  • 对单向协作尽量放开
  • 对双向协作严谨设计

SpreadJS作为实现多人协作“在线excel”系统的巨大优势是什么?

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

  • SpreadJS的产品质量是毋庸置疑的
  • SpreadJS在设计之初,便考虑到了多人协作的可能,而除此之外,绝大多数的前端产品都不是为了多人协作而设计的
  • 多人协作需要中心系统的支持,SpreadJS基于纯前端的体系架构可以很容易的嵌入系统开发,而无需过多考虑与原生系统的兼容性,这是常规组件是无法做到的
  • 要实现多人协作,需要投入一定的开发成本,SpreadJS作为一款开发工具,可以有效帮助开发人员减轻代码量多人协作表格的本质:
  • Server – Clients 中心系统,类似数值敏感的小型网游
  • 任何这类系统都是在体验和正确性中寻求平衡

多人协作表格的特点:

  • 表格的数值敏感性高于网游,数据操作和存储的挑战更大
  • 表格的计算复杂度更高,尤其涉及复杂公式嵌套与全量统计筛选
  • Web存在天花板,所以复杂的页游并不多见,端游较多

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

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

本教程内容到这里就完结了,想要了解教程详细内容请点击下方链接~想要下载SpreadJS试用版使用,请点击这里

相关内容推荐:

SpreadJS实现多人协作“在线excel”系统的优势(一):多人协作的形式
SpreadJS实现多人协作“在线excel”系统的优势(二):多人协作的基础


想要购买SpreadJ正版授权,或了解更多产品信息请点击


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP