当前位置: 首页 > 科技观察

与Abin学习和谐(4),分布式HelloHarmony的N种写法

时间:2023-03-12 06:29:39 科技观察

更多内容请访问:Harmonyos.51cto.com/Harmonyos.51cto.com/#zz鸿蒙OS是一个分布式操作系统,能力是其调度的基本单位。那么,一个分布式的HelloHarmony到底有多少种写法呢?#分布式HelloHarmony用例##1.根据能力的类型###1)。FA<->FAFA=FeatureAbility,用于展示的前台能力。可以理解为两个前端应用程序在协作。FA/FA模式下的HelloHarmony,即我说Hello,你说Harmony。在鸿蒙OS中,FA与FA的合作方式有以下三种:*Start,即一个FA启动另一个FA。严格来说这不算是合作,但与其他操作系统类似,鸿蒙OS也提供了不同的应用。或者进程相互启动的能力。*迁移(transfer,transfer,relay),即将一个接口从一台设备迁移到另一台设备。比如导航,查询时在手机上,开车时在车上,走路时在手表上,甚至耳机上。比如视频播放,从手机传到电视上。*协作,多台设备在各自的界面上共同完成相同的工作。比如多人一起修改一个文档。例如,多人一起在线玩游戏。需要注意的是,在鸿蒙OS的设计中,不借助PA,很难直接进行FA之间的协同。这就好比在MVC架构中,为了解耦,不同的View通常不会直接交互。当然,我们可以利用一些非鸿蒙OS独有的特性,比如网络,来搭建不同FA之间的沟通桥梁,但这样很不和谐。###2).FA<->PAPA=ParticleAbility,不显示的后台服务能力。前台接口配合后台服务。FA/PA的HelloHarmony,你大声说Hello,我耳语Harmony。这种交互,即使在现在的APP开发中,也是常见的前后端分离的架构设计。利用鸿蒙OS的多设备连接能力,可以方便地实现在最适合展示(交互)的设备上运行FA,在计算能力更强、剩余更多的设备上运行PA。比如你用手机和电视玩游戏,手机作为游戏主机(和手柄),电视作为显示器。###3).PA<->PA配合不同的后台服务。PA/PA的HelloHarmony,就是你对我耳语Hello,我耳语回Harmony。这样不同的PA就可以专注于自己的业务,然后通过组合完成更复杂的任务。DataAbility其实可以看成是处理数据存储任务的PA,而普通的ServiceAbility则负责处理具体的任务。使用DA,您可以轻松地为任务添加存储功能。##2.根据申请*1).与应用程序相同*2)。不同的应用事实上,应用的概念在鸿蒙OS中已经被边缘化,能力是目前的C位。因此,不存在AppA说Hello,AppB说Harmony的场景,只有AbilityA说Hello,AbilityB说Harmony。基于这样的设定,其实我们不应该关心这个Ability属于哪个应用,因为每个Ability都是独立的。如果还是绕不过,可以暂时把一个Ability想成一个应用。但需要注意的是,在鸿蒙OS中,一个Ability不一定能像传统App那样独立完成一个任务。在组织和编写代码的时候,共同完成一个任务的不同能力之间难免会有交集,而这仅限于编写代码的时候。在运行时,每个Ability都有自己的进程和内存空间。##3.根据设备*1).单个设备*2)。跨设备鸿蒙OS天生就具备连接多台设备的能力。对于开发者来说,需要考虑的是当前环境中已经连接了多少设备,而不是要连接到哪个设备。具体来说,我们不需要考虑网络的问题,而是需要考虑在当前环境下使用哪种设备来完成任务更合理。多设备环境分布式HelloHarmony,*每个设备可以轮流说HelloHarmony,即你说HelloHarmony,我也说HelloHarmony。*也可以与所有设备完成一个HelloHarmony,即你说Hello,我说Harmony。#参考文档*能力概览>https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852*分布式任务调度>https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-distributed-overview-0000001050419345#后续我会一一讲解不同的写法,欢迎继续关注。了解更多请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com/#zz