多端协同解决什么问题

手机上拍的照片,想在平板上接着修;出门用手机记的笔记,回家在智慧屏上接着看。传统做法是手动传文件、靠云盘中转。鸿蒙的分布式能力把这件事抹平:应用感知不到多台设备,只像在操作一台设备。

分布式的目标:让多设备协同对开发者透明,用户却能真切感到连贯。

这篇从文件到任务,把多端协同走一遍。

分布式技术栈总览

鸿蒙分布式能力分几层:分布式软总线负责发现与连接设备;分布式数据管理负责跨端数据同步;分布式文件负责跨端文件存取;跨端迁移与协同负责把一个页面或会话搬到另一台设备。底层由系统屏蔽,业务侧调接口即可。

分布式能力速查
  • 软总线发现、连接附近设备。
  • 分布式数据跨端数据库同步。
  • 分布式文件跨端文件读写。
  • 跨端迁移页面流转与接续。

发现与连接附近设备

协同的第一步是找到对方。分布式设备管理提供设备发现与连接接口:同一账号、同一局域网下的可信设备会被枚举出来。业务侧拿到设备列表,让用户选择要协同的那台,再建立连接。

const deviceList = deviceManager.getTrustedDeviceList()
deviceList.forEach(d => console.log(d.deviceName))

枚举出来的就是当前可信、可协同的设备。

分布式文件:跨设备存取

分布式文件系统把多台设备的存储连成一个统一命名空间。写入一个跨端路径,数据实际落在对端设备上,本地却像读写自己的文件。跨端大文件传输、相册共享都走这条路。

鸿蒙多端协同:多台不同形态设备之间以发光数据流线双向连接、中间悬浮共享文件立方体的扁平科技插画
共享文件:一个文件立方体在多设备间流动。

跨端数据流与状态同步

分布式数据对象把一份数据在多端绑定:一端改,另一端自动收到回调。适合协同编辑、状态共享。配合上一篇讲的状态管理,界面只需订阅数据,跨端更新会自动反映到界面。