2021 年新年伊始,钉钉在 1 月 14 日发布了最新 6.0 版本,同时宣布战略定位全面升级,钉钉将从过去基于IM的协同办公平台,升级为企业协同办公和应用开发平台。

从产品和市场表现,钉钉已经杀出了一条血路。IM 一直是互联网的顶级战场,钉钉以企业 IM 入场,经过 6 年的深耕和征战,钉钉向市场交出了一份成绩单:用户数突破 4 亿,使用钉钉的企业组织数超过 1700 万。

不过这一次的发布会上,对于开发者群体更具意义的,是钉钉宣布将全面开放底层能力和1300个API接口,还将开放钉钉群聊、智能人事、客户管理等基础产品的接口,以及涉及到的一项底层“协同框架”技术。

让钉钉的企业应用开发能力“更开放”。

据钉钉介绍,基于协同框架可以像开发本地程序一样,开发多人、多端、多场景的实时协同应用,也支撑了钉钉音视频、IM、文档等很多核心系统的通用的底层框架。近日,CSDN 专访了钉钉基础技术负责人强琦和钉钉协同框架技术负责人李乔,揭秘这项创新技术的设计理念。

国内首创协同框架,钉钉底层架构揭秘

此次钉钉 6.0 发布会上,推出了多个全新亮相的产品和功能,例如面向企业用户的低代码开发工具;面向人事、财务、IT、销售和管理者,推出角色工作台;开放的开发接口,涵盖人事、客服、群组、企业应用连接器等模块;基于跨企业合作、产业协同、消费者服务场景,推出合作空间、服务窗等模块;倡导“以事情为中心”,整合钉钉协同办公套件,简化用户交互界面等等。

如果说本次发布的低代码开发工具是面向企业的所有普通用户,协同框架技术则是面向专业的开发者。钉钉抓住企业应用场景中多人、多端、实时协同的特点,聚焦解决实时协同中的关键技术难点,构建了一套全新的技术框架,让原本复杂的多人实时协同应用像开发本地应用一样简单。钉钉将这项技术称为“协同框架”(tangleframework)。

据悉,钉钉协同框架是国内业界首创,强琦介绍,钉钉在实现移动实时协同产品时,系统需要处理大量诸如移动端弱网处理、离线可用、下线过久后重新上线、重放、冲突检测与解决、回滚、公平性、并发提交、数据一致性、大规模实时推送等关键技术难点。

协同框架正是借助了钉钉在以上方面的大量关键技术积累,同时应用于客户端与服务端的引擎层设计,抽象为通用的对等有限状态机模型。

这些硬核的底层技术,并不是所有应用开发团队都有时间与精力去独立实现。未来钉钉也将把这项底层架构和技术能力全面开放,为企业应用开发全面加码。

协同框架将复杂的处理透明化,让开发者在使用协同数据结构与组件时对这些复杂性“无感知”,让开发者不用关注与“多人”“实时”“协同”相关的底层架构与算法问题,而是专注在自己的业务逻辑上。开发者可以像开发本地程序一样,借助钉钉的协同框架开发多人、实时协同、多端的程序,代码量可以大幅缩减。而这套技术将与钉钉小程序结合向开发者开放。

钉钉 6.0“一起标注”功能背后由协同框架实现

强琦向 CSDN 详细介绍了钉钉协同框架开放的三层能力:

  1. 在协同框架的最上层,提供了一系列可复用的组件,是可以快速接入使用的组件层。例如此次 6.0 版本发布的“一起标注”功能中,正是使用了可复用的协同画布组件,,未来钉钉也会在这一层增加更多组件内容。

  2. 在协同框架第二、三层,是协同小程序与协同数据结构,是帮助开发者提升开发效率的框架层。提供了协同数据结构,是让开发者可以直接使用的类似标准类库的数据结构,比如 CoString、CoCounter、CoPixel、CoMap、CoList 等,在小程序、客户端 App、服务端应用中以以对等、相同的方式直接使用这些数据结构。

  3. 最底层是最复杂但又最强大的能力层,是面向自动机的语义,可以扩展出更多类似于 CoPixel 这样的协同数据结构。当然,专业开发团队就必须实现相关接口,来完成类似初始化、冲突检测、回滚的具体逻辑等等更为精细化设计。

开发多人实时协同应用如何做到像本地应用一样简单?

以开发一个基本的TodoList应用为例,如果只是完成单人本地使用的功能,相信对于大部分开发者而言并不困难,但如果说要做一个支持多人多设备实时编辑的TodoList,而且这个Todo既可以被嵌入在任务系统,也可以被嵌入在工作台,也可被嵌入在CRM里,那么问题就会复杂很多,开发者需要关注许多协同带来的工程架构问题与算法问题,上面提到的诸如弱网离线可用、乱序、重放、冲突检测与解决、数据一致性等问题,对于大部分开发者可能是比较高的门槛。

回过头来看,一个本地TodoList应用是如何实现的:你可能需要一个List对象,一个用于存储任务列表的List型数据结构,而当用户创建了一个新的任务时,程序会创建一个新的任务对象,并将这个任务对象作为一个新的元素置入List中。最后,这个List数据结构绑定到一个列表UI组件上,通过数据渲染出界面,可能这就是一个本地TodoList的核心逻辑了。

而当需要支持多人在线编辑时,事情变得复杂起来。当修改本地的List数据时,需要发送到服务端并同步给所有一起协同的其他用户,另外,还需要关注其他用户是否也修改了List,程序需要作出对应的动作更新界面,而且,如果多位用户同时修改一个任务时,他们的修改操作如何合并,如果修改发生了冲突如何解决,如果确认冲突解决后符合每个人的意图预期,弱网、离线时如何处理数据的存储并在网络恢复时发送,每个修改操作如何确保实时推送到在线的用户端,当需要大量操作重放时如何提升恢复的效率,这些问题复杂度对多人实时协同带来比较高的门槛,尤其是在移动端场景下。

而有了协同框架以外,将一个本地版的TodoList进化为多人实时协同版TodoList,只需要用上协同数据结构替换原来的本地数据结构。将List替换为框架提供的CoList,如此便得到了多人协同能力。当用户A往CoList中新增一个任务时,用户B的CoList对象中就会自动增加对应的任务对象。

再看本次钉钉6.0发布的“一起标注”功能,也是基于协同框架开发的一个产品功能,其实现是基于一个名为CoPixel的数据结构,用于表示标注笔画图形的数据,UI层封装为一个协同画布组件。用户在协同画布上每画一笔,都会对CoPixel产生对应修改,进而自动协同到所有参与协作的用户端,其他用户端的CoPixel会回调UI层的画布组件,从而新笔画得到展现。当多名用户同时操作,这些动作会合并并自动解决其中可能产生的冲突。

低代码正流行,专业开发者的机会在哪里

企业级应用开发领域早已不是研发 OA 系统、ERP 系统这些传统软件的时代。在移动化和云化趋势下,软件开发中各类软件之间的数据孤岛已被打破。基础设施提升了效率,企业对应用开发需求却不降反增,企业应用百花齐放。

阿里云智能总裁张建锋预测,软件开发和企业服务将重构,并出现新的生态和模式。或许下一场软件变革就将发生在企业的 IT 部门。IT 部门人员也不再仅仅是专业软件的使用者,他们将成为最理解业务需求的一线软件开发者,也将是企业软件开发的主力军。而钉钉企业级应用开发平台的价值,就是为企业提供快速开发的平台和服务,进而帮助行业重塑整个软件开发体系。

为了满足快速增长的企业应用开发需求,在 6.0 新版本中,钉钉将结合宜搭、氚云、简道云等生态内平台推出低代码开发工具,提供快速开发能力。

但是对于专业开发者来说,低代码一直是被争议的话题。比如钉钉宜搭的低代码客户也在形容快速开发工作是“会用一点点电脑的都会”,对专业开发者简直太扎心了啊。

对此钉钉也明确,实质上低代码开发的核心价值,是让普通人可以具备基础的开发能力。低代码的重点是“基础的开发能力”,目的是让企业数字化可以快速创新。

针对专业的开发者群体,钉钉则是提供大量的产品 API,和更高级的低代码能力,可以让开发者能够专注在业务开发的逻辑本身,减少在事务性开发的时间和精力浪费,协同框架的开放同样如此。

“一直以来,一个具有生命力的平台,必定是能为平台之上的开发者提升其生产力,帮助开发者更好地专注在其应用的核心业务逻辑,而无需为底层基础能力操心。”李乔说。

从汇编到 C、Java,再到 SaaS、PaaS,编程技术的发展是不断拆分和模块化的过程。而不同的平台,为开发者带来的生产力提升,会有不同的视角与重心。Android 与 iOS 作为移动应用的平台,为开发者提升的是移动 App 的开发效率,当前各种小程序平台,为其开发者提升的是一次开发、跨平台运行、灵活发布的生产力。聪明的程序员们一直在减少低效、事务性的重复劳动。钉钉打磨的协同框架,也是要让最简洁的开发,进入正在快速发展的企业应用领域,为企业开发者带去极致的开发体验。

协同框架将助力开发者,还原更多实时协同场景

钉钉在企业级市场取得成绩,背后是对企业级软件开发场景的理解。强琦向 CSDN 分享了个人对于 toB(企业级)业务与 toC(个人)应用两者差异的理解。C端场景在多数情况下,都是某个用户独自完成一个功能闭环,例如淘宝个人化的购买行为,每个人刷抖音的不同视频内容等,多数情况下对等用户之间不需要产生协作与互动,可能只有多人在线手游,算是 C 端一个需要重度协同的场景。

而企业级应用是面向企业、组织、团队等工作场景的社会化协作,本质上是由多人共同去完成某件事务,不论是共同维护项目任务的进展,共同编辑一篇工作文档,在线课堂白板,还是在群里消息互动等,多人协同是企业级应用的重要属性。

而协同框架正是基于这个 toB 业务的底层逻辑,希望通过降低 toB 业务多人实时协同的技术门槛,帮助钉钉平台上的开发者,可以更好地实现各自行业领域的协同功能。企业应用的开发者可以聚焦在最有核心价值的业务逻辑上,而无需关注底层多人实时协作的工程实现与算法问题。

所谓“工欲善其事,必先利其器”,钉钉的协同框架,是要为企业应用开发者打造的“趁手兵器”。协同框架丰富的模块化组件、底层接口,也符合钉钉本次发布会提出的“更简单、更开放”的理念,而这也是业界一直迭代和追求的目标,让开发更简单。

强琦在采访中更进一步地提到,实质上不仅是协同框架的技术开放,向开发者群体开放技术、产品能力,是钉钉从诞生以来一直在做的事情,钉钉内现在入驻的开发者已经超过 27 万,开发的应用超过 70 万。并且其中有不少开发者,因开发的应用获得一定规模用户的认可,完成从个人开发者到创业公司的转变,及后续的获客、增长、融资等更长远的发展。

“分享、点赞、在看”

钉钉 6.0 开放底层“协同框架” 开发多人实时协作程序像编本地程序一样简单...相关推荐

  1. 钉钉总裁不穷首谈产品观:To B产品用户不只是CEO

    编辑 | 宋慧 出品 | CSDN云计算 头图 | 钉工牌发布现场图 8月24日,钉钉正式对外发布首个数字工牌产品"钉工牌",这是行业内首个整合了工作身份验证与支付功能的数字工牌产 ...

  2. 钉钉推出“钉工牌”,门禁、差旅、员工福利一码通用

    钉工牌将工作身份验证与支付功能相整合,不同于传统物理工牌,它是一张数字时代的"活"工牌. 编辑 | 宋慧 出品 | CSDN云计算 8月24日,钉钉向1700万企业组织正式推出&q ...

  3. @钉钉机器人自动回复消息

    @钉钉机器人自动回复消息 一.pc端钉钉创建一个企业 二.登录钉钉开发者后台,创建企业机器人 三.配置服务器安全组项(这里以阿里云服务器为例) 四.开启一个web服务,用于接收和发送数据 五.配置开发 ...

  4. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  5. Microsoft .net 框架开发平台体系架构

    .net 平台构成 1 底层操操作系统 windows 由于Web服务和使用Web服务的应用程序仍然运行在计算机上,而且既然是计算机都 要有外设,所以我们仍然需要一个操作系统.. Windows添加了 ...

  6. Enterprise Library v5.0 -- Data Access Application Block 开发向导(3)

    微软企业库 Enterprise Library 5.0 正式发布!!! Enterprise Library 5.0 开发向导- 简介(1) Enterprise Library v5.0 -- D ...

  7. 9. Zigbee应用程序框架开发指南 - 属性管理

    1 Zigbee应用程序框架开发指南 - 概述 2 Zigbee应用程序框架开发指南 - 应用程序框架结构 3 Zigbee应用程序框架开发指南 - 应用程序框架目录结构 4 Zigbee应用程序框架 ...

  8. 微信小程序wepy框架开发资源汇总

    开源项目 wepy-wechat-demo:基于wepy开发的仿微信聊天界面小程序 深大的树洞:基于wepy开发的树洞类微信小程序 wepy-demo-bookmall:微信小程序??代码示例,使用w ...

  9. 钉钉协同引擎与应用场景技术探索

    作者:孙然(煮虾) 协同引擎是钉钉面向跨平台终端并解决分布式数据一致性的 Runtime 与开发框架. 它主要解决三类场景问题: 多人实时协同 跨端同步与应用状态接力 离线可用 Local First ...

最新文章

  1. 华为u8825d解锁工具_黔隆科技刷机教程VIVOX20PLUSA忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  2. YGC 问题排查,又涨姿势了!
  3. AI又成中国名片!杭州8分钟展示阿里无人车,马云压轴广发英雄帖
  4. mysql内容_mysql 的基本内容
  5. ktv服务器管理系统,KTV收银管理系统.doc
  6. 二分类混淆矩阵结构_「混淆矩阵」4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix) - seo实验室...
  7. 虚拟机+linux(NeoKylin)网络配置问题:UDP广播不能发送接收数据问题系列解决
  8. SpringBoot 之 @Transaction注解的类级别和方法级别的区别
  9. javascript 基本用法
  10. iOS 磁场传感器的应用 Swift CoreMotion使用
  11. 入门大数据就业前景怎么样?
  12. 【题解反思】海亮信息集训A-B班-分治初步专项
  13. vue双向绑定原理及实现
  14. c语言循环题兔子第三个月生,C语言上机习题
  15. 提笔,再回忆~落笔,成悔,一切皆已随风:伤感日志
  16. 一个人并不寂寞,想一个人才寂寞:QQ空间情感日志
  17. 不使用Ultra Liberarion软件导出BXL文件的方法
  18. 如何在剪映windows版中将视频上传到指定的抖音账号中
  19. 人脸识别打卡项目(2)
  20. 有没有夫妻相?刷一下脸就知道!

热门文章

  1. Node.js 初步学习总结
  2. 班服的图片展示和投票的实现
  3. linux 文本编辑 软件管理
  4. 【洛谷】P1052 过河(状压dp)
  5. 使用证书创建request请求
  6. Robot Framework中经常用的第三方库的安装方法
  7. GPS各种地图坐标系转换(转载)
  8. 恶意软件--》木马、病毒、蠕虫
  9. 常见地理知识总结的连接
  10. Java设计模式05:常用设计模式之原型模式(创建型模式)