共计 2638 个字符,预计需要花费 7 分钟才能阅读完成。
作者:yijian,终端 OS 分布式文件系统专家;gongashi,终端 OS 分布式数据管理专家
HarmonyOS 作为分布式操作系统,其分布式数据管理能力十分重要。咱们也始终围绕继续为开发者带来全局“一份”数据的开发体验的指标,在一直加强和晋升 HarmonyOS 的分布式数据管理能力。本期咱们就来为大家具体介绍分布式数据管理的新能力。
一、分布式数据管理平台面临的挑战
咱们先来看一个典型的分布式场景:
手机和智慧屏协同进行文档演示,手机上的文档演示状态(比方翻页、页面放大、页面放大和涂鸦等)须要同步到智慧屏,同样智慧屏上的文档演示状态也须要同步到手机上。
图 1 分布式文档演示场景
要实现以上场景,开发者面临以下两个挑战:
挑战 1:如何更便捷地实现数据的“多端协同”?
手机上的文档演示状态同步到智慧屏上,智慧屏上的文档演示状态也同步到手机上,这其实就是数据的“多端协同”。要实现数据的“多端协同”,须要开发者实现音讯解决逻辑,包含:建设通信链接、音讯收发解决、错误处理和性能调优等,工作量十分大。此外,设施越多,调试复杂度将呈指数增长。
挑战 2:如何更高效地实现数据的“跨端迁徙”?
手机和智慧屏协同进行文档演示时,手机上的文档要发送到智慧屏上操作,这就波及到数据的“跨端迁徙”。以往通常的做法是建设两个设施的通信连贯,手机发送文档给智慧屏,智慧屏接管后关上和批改文档,再将文档发回给手机。这种实现形式很简单,而且文件来回传输也十分影响用户的操作效率。
二、分布式数据管理平台
面对下面两个挑战,HarmonyOS 的解决办法是:在分布式数据管理平台提供全局拜访框架和分享框架,来撑持开发者在拜访、迁徙、协同、分享等分布式场景下的业务翻新。
图 2 分布式数据管理平台
图 2 中,全局拜访框架和分享框架中的数据库,在 HarmonyOS 2 就曾经公布了,咱们也在往期推文中介绍过,本期不再赘述。全局拜访框架和分享框架中标黄的“变量”和“文件”是行将在 HarmonyOS 新版本中公布的内容,接下来为大家具体介绍。
三、变量的全局拜访
对于挑战 1,为了更便捷地实现数据的“多端协同”,HarmonyOS 提供了变量的全局拜访框架。
下面分布式文档演示场景中,文档演示状态(比方翻页、页面放大、页面放大和涂鸦等)其实就是变量。如果这些变量反对“全局”拜访,那么开发者跨设施拜访这些变量就能像操作本地变量一样,数据就可能主动高效、便捷地多端同步了。为了实现变量的“全局”拜访,HarmonyOS 提出了“分布式数据对象”的概念,将变量封装成分布式数据对象。
- “分布式数据对象”的设计理念
分布式数据对象的设计理念如图 3 所示。基于分布式软总线能力和分布式内存数据库的跨设施同步能力,HarmonyOS 构建了基于 JS 对象(也就是分布式数据对象)的接口。开发者间接应用此接口就能够实现跨设施的数据同步,无需关注底层通信过程,能够更关注于业务逻辑的开发。
图 3“分布式数据对象”设计理念 - 三步应用“分布式数据对象”
“分布式数据对象”接口极为简略、易用,只须要3个步骤:
(1)定义 JS 对象的时候继承 DistributedDataObject 基类
(2)设置 objectID、sessionID
(3)订阅分布式数据对象的变动(可选)
此外,其余与本地对象操作完全一致。
“分布式数据对象”接口的基类、办法和参数阐明如下:
图 4“分布式数据对象”接口阐明
上面咱们来看看“分布式数据对象”接口应用的示例代码。图 5 是多端协同发起方的示例代码,图 6 是多端协同接管方的示例代码。
图 5 多端协同发起方的示例代码
图 6 多端协同接管方的示例代码
四、文件的全局拜访和分享
对于挑战 2,为了更高效地实现数据的“跨端迁徙”,HarmonyOS 提供了文件的全局拜访框架和分享框架。(为了不便了解,图 7 仅展现了分布式数据管理平台中的文件局部。)
图 7 分布式数据管理平台(文件局部)
如图 7 所示,文件拜访框架分为利用文件拜访框架和公共文件拜访框架。
HarmonyOS 2 曾经提供利用文件拜访框架,HarmonyOS 行将公布的新版本中会新增公共文件拜访框架和文件共享框架,加强文件的全局拜访和分享能力,从而实现屏蔽物理存储地位,达到让利用能够像拜访本地文件一样拜访远端文件的指标。
基于新增的公共文件拜访框架和文件共享框架,咱们来看看如何实现两个典型的文件应用场景:
- 间接关上远端文件
场景阐明:间接在设施 A 上关上设施 B 上的公共文件。
实现阐明:开发者将分布式文件系统接入文件选择器(File Picker),利用就能够通过分布式的 File Picker 间接关上、编辑远端文件,不须要进行跨设施的文件发送。
实现代码示例如下:
var parameter = {“want”: {“action”:“action.com.huawei.filecenter.PICKER_ACITON”},
};
featureAbility.startAbilityForResult(parameter, (err, data) => {………// 可间接关上、编辑远端文件})
实现成果如图 8 所示,用户在本机上能够抉择远端设施,能够看到远端设施上的文件列表,并且能间接关上和编辑远端文件。
图 8 间接关上远端文件
- 文件的“跨端迁徙”
场景阐明:设施 A 分享一个公共文件给设施 B,在设施 B 上关上该文件。
实现阐明:此场景下,设施 A 并没有将文件真的发送给设施 B,而是在设施 A 和设施 B 之间建设了文件的映射关系,设施 B 通过此映射关系近程拜访设施 A 上的文件。具体实现流程如图 9 所示。
图 9 文件的“跨端迁徙”
实现步骤和示例代码如下:
(1)设施 A 分享文件句柄给设施 B。
`handoffHelper.creator(networkID, fd);`
(2)设施 A 和设施 B 建设文件的映射关系。
(3)设施 B 收到文件分享音讯后,响应音讯并获取文件的 URI。
let helper1 = DataAbilityHelper.creator(getContext());
(4)设施 B 上的利用通过 URI 关上远端文件。
helper1.openFile(Uri, "rw", function(fd) {…………})
五、结束语
分布式数据管理平台新增变量和文件的全局拜访框架,以及文件分享框架,帮忙开发者更便捷地实现数据的“多端协同”,更高效地实现数据的“跨端迁徙”。这些新能力将在 HarmonyOS 的新版本中体现,敬请期待!
HarmonyOS 正在一直成长,期待更多的开发者退出咱们,一起见证 HarmonyOS 的成长!