钉钉 6.0 开放底层“协同框架” 开发多人实时协作程序像编本地程序一样简单...
2021 年新年伊始,钉钉在 1 月 14 日发布了最新 6.0 版本,同时宣布战略定位全面升级,钉钉将从过去基于IM的协同办公平台,升级为企业协同办公和应用开发平台。
从产品和市场表现,钉钉已经杀出了一条血路。IM 一直是互联网的顶级战场,钉钉以企业 IM 入场,经过 6 年的深耕和征战,钉钉向市场交出了一份成绩单:用户数突破 4 亿,使用钉钉的企业组织数超过 1700 万。
不过这一次的发布会上,对于开发者群体更具意义的,是钉钉宣布将全面开放底层能力和1300个API接口,还将开放钉钉群聊、智能人事、客户管理等基础产品的接口,以及涉及到的一项底层“协同框架”技术。
让钉钉的企业应用开发能力“更开放”。
据钉钉介绍,基于协同框架可以像开发本地程序一样,开发多人、多端、多场景的实时协同应用,也支撑了钉钉音视频、IM、文档等很多核心系统的通用的底层框架。近日,CSDN 专访了钉钉基础技术负责人强琦和钉钉协同框架技术负责人李乔,揭秘这项创新技术的设计理念。
国内首创协同框架,钉钉底层架构揭秘
此次钉钉 6.0 发布会上,推出了多个全新亮相的产品和功能,例如面向企业用户的低代码开发工具;面向人事、财务、IT、销售和管理者,推出角色工作台;开放的开发接口,涵盖人事、客服、群组、企业应用连接器等模块;基于跨企业合作、产业协同、消费者服务场景,推出合作空间、服务窗等模块;倡导“以事情为中心”,整合钉钉协同办公套件,简化用户交互界面等等。
如果说本次发布的低代码开发工具是面向企业的所有普通用户,协同框架技术则是面向专业的开发者。钉钉抓住企业应用场景中多人、多端、实时协同的特点,聚焦解决实时协同中的关键技术难点,构建了一套全新的技术框架,让原本复杂的多人实时协同应用像开发本地应用一样简单。钉钉将这项技术称为“协同框架”(tangleframework)。
据悉,钉钉协同框架是国内业界首创,强琦介绍,钉钉在实现移动实时协同产品时,系统需要处理大量诸如移动端弱网处理、离线可用、下线过久后重新上线、重放、冲突检测与解决、回滚、公平性、并发提交、数据一致性、大规模实时推送等关键技术难点。
协同框架正是借助了钉钉在以上方面的大量关键技术积累,同时应用于客户端与服务端的引擎层设计,抽象为通用的对等有限状态机模型。
这些硬核的底层技术,并不是所有应用开发团队都有时间与精力去独立实现。未来钉钉也将把这项底层架构和技术能力全面开放,为企业应用开发全面加码。
协同框架将复杂的处理透明化,让开发者在使用协同数据结构与组件时对这些复杂性“无感知”,让开发者不用关注与“多人”“实时”“协同”相关的底层架构与算法问题,而是专注在自己的业务逻辑上。开发者可以像开发本地程序一样,借助钉钉的协同框架开发多人、实时协同、多端的程序,代码量可以大幅缩减。而这套技术将与钉钉小程序结合向开发者开放。
钉钉 6.0“一起标注”功能背后由协同框架实现
强琦向 CSDN 详细介绍了钉钉协同框架开放的三层能力:
在协同框架的最上层,提供了一系列可复用的组件,是可以快速接入使用的组件层。例如此次 6.0 版本发布的“一起标注”功能中,正是使用了可复用的协同画布组件,,未来钉钉也会在这一层增加更多组件内容。
在协同框架第二、三层,是协同小程序与协同数据结构,是帮助开发者提升开发效率的框架层。提供了协同数据结构,是让开发者可以直接使用的类似标准类库的数据结构,比如 CoString、CoCounter、CoPixel、CoMap、CoList 等,在小程序、客户端 App、服务端应用中以以对等、相同的方式直接使用这些数据结构。
最底层是最复杂但又最强大的能力层,是面向自动机的语义,可以扩展出更多类似于 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 开放底层“协同框架” 开发多人实时协作程序像编本地程序一样简单...相关推荐
- 钉钉总裁不穷首谈产品观:To B产品用户不只是CEO
编辑 | 宋慧 出品 | CSDN云计算 头图 | 钉工牌发布现场图 8月24日,钉钉正式对外发布首个数字工牌产品"钉工牌",这是行业内首个整合了工作身份验证与支付功能的数字工牌产 ...
- 钉钉推出“钉工牌”,门禁、差旅、员工福利一码通用
钉工牌将工作身份验证与支付功能相整合,不同于传统物理工牌,它是一张数字时代的"活"工牌. 编辑 | 宋慧 出品 | CSDN云计算 8月24日,钉钉向1700万企业组织正式推出&q ...
- @钉钉机器人自动回复消息
@钉钉机器人自动回复消息 一.pc端钉钉创建一个企业 二.登录钉钉开发者后台,创建企业机器人 三.配置服务器安全组项(这里以阿里云服务器为例) 四.开启一个web服务,用于接收和发送数据 五.配置开发 ...
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...
- Microsoft .net 框架开发平台体系架构
.net 平台构成 1 底层操操作系统 windows 由于Web服务和使用Web服务的应用程序仍然运行在计算机上,而且既然是计算机都 要有外设,所以我们仍然需要一个操作系统.. Windows添加了 ...
- Enterprise Library v5.0 -- Data Access Application Block 开发向导(3)
微软企业库 Enterprise Library 5.0 正式发布!!! Enterprise Library 5.0 开发向导- 简介(1) Enterprise Library v5.0 -- D ...
- 9. Zigbee应用程序框架开发指南 - 属性管理
1 Zigbee应用程序框架开发指南 - 概述 2 Zigbee应用程序框架开发指南 - 应用程序框架结构 3 Zigbee应用程序框架开发指南 - 应用程序框架目录结构 4 Zigbee应用程序框架 ...
- 微信小程序wepy框架开发资源汇总
开源项目 wepy-wechat-demo:基于wepy开发的仿微信聊天界面小程序 深大的树洞:基于wepy开发的树洞类微信小程序 wepy-demo-bookmall:微信小程序??代码示例,使用w ...
- 钉钉协同引擎与应用场景技术探索
作者:孙然(煮虾) 协同引擎是钉钉面向跨平台终端并解决分布式数据一致性的 Runtime 与开发框架. 它主要解决三类场景问题: 多人实时协同 跨端同步与应用状态接力 离线可用 Local First ...
最新文章
- 华为u8825d解锁工具_黔隆科技刷机教程VIVOX20PLUSA忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
- YGC 问题排查,又涨姿势了!
- AI又成中国名片!杭州8分钟展示阿里无人车,马云压轴广发英雄帖
- mysql内容_mysql 的基本内容
- ktv服务器管理系统,KTV收银管理系统.doc
- 二分类混淆矩阵结构_「混淆矩阵」4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix) - seo实验室...
- 虚拟机+linux(NeoKylin)网络配置问题:UDP广播不能发送接收数据问题系列解决
- SpringBoot 之 @Transaction注解的类级别和方法级别的区别
- javascript 基本用法
- iOS 磁场传感器的应用 Swift CoreMotion使用
- 入门大数据就业前景怎么样?
- 【题解反思】海亮信息集训A-B班-分治初步专项
- vue双向绑定原理及实现
- c语言循环题兔子第三个月生,C语言上机习题
- 提笔,再回忆~落笔,成悔,一切皆已随风:伤感日志
- 一个人并不寂寞,想一个人才寂寞:QQ空间情感日志
- 不使用Ultra Liberarion软件导出BXL文件的方法
- 如何在剪映windows版中将视频上传到指定的抖音账号中
- 人脸识别打卡项目(2)
- 有没有夫妻相?刷一下脸就知道!