HarmonyOS分布式应用框架深入解读
随着越来越多设备的智能化,在多设备场景下应用开发面临以下挑战:从多设备的形态差异(不同大小、不同分辨率、不同形状的屏幕,多样化的交互方式–按钮、触屏、键盘、语音、手势等),多设备的能力差异(内存从百 KB级到GB级设备)。
针对上述挑战,HarmonyOS作为一款面向万物互联时代的、全新的分布式操作系统,将迎刃而解,这得益于HarmonyOS的分布式应用框架,这些多设备组成一个超级终端,充分发挥各设备能力,从而实现多设备间多端协同、跨端迁移,为万物互联奠定基础。
针对HarmonyOS的分布式应用框架后面章节将分别深入解读。
一、HarmonyOS用户程序
在HarmonyOS系统上应用分为:HarmonyOS应用、原子化服务,HarmonyOS应用就是跟传统应用一样需要在应用商店下载安装,原子化服务是具有独立操作入口、免安装、实现特定功能,比微信小程序功能更强大,加上HarmonyOS的跨设备、分布式的能力及应用,二者具有无限能力。
从开发者角度看,HarmonyOS上基本的组件分为3+1,其中3代表三个Ability,分别是:PageAbility:负责用户界面的显示,DataAbility:负责数据的管理,对外部提供统一的数据访问抽象,ServiceAbility:负责后台运行的任务。1代表AbilityForm服务卡片,可以将重要信息或操作前置于此,以达到服务直达,减少体验层级的目的。3+1组件进行组合开发出HarmonyOS上的应用,其打包格式为HAP(HarmonyOS Ability Package),根据HAP是否有界面分为:FA(Feature Ability)、PA(Particle Ability)两种类型。
HarmonyOS分布式应用程序框架整体架
从应用框架的角度对系统的分层,共分5层,分别如下:
底层软件层:包括内核和HAL、软总线,这一层开发者不会用着,一般默默地为开发者和用户服务。
基础服务层:包括分布式调度管理、分布式数据管理、分布式硬件管理、分布式权限管理。
核心服务层:包括全局包管理、分布式运行管理,全局包管理:HarmonyOS上的应用不再局限于单台设备上,包管理还包括跨虚拟终端上的所有设备。分布式运行管理负责应用动态运行时管理,包括协同框架、迁移框架、服务卡片框架。
应用接口层:是系统提供给广大开发人员开发应用的接口层,不管系统底层实现有多复杂,但提供给开发者的接口尽可能的简单。这层包括之前提到的基本组件,还有ACE(Ability Cross-platform Environment)框架,在多设备的交互模型下,一致性很重要,从UI的角度怎么让UI框架适应大屏、小屏、长屏、方屏、横屏等,这个一致性很大程度是由ACE框架支撑的。
用户程序层:这层就是广大开发者开发的应用供用户使用。
HarmonyOS分布式应用程序框架运行视图
这是应用框架运行时的视图,运行时每个应用在独立的沙箱里面,彼此隔离互不影响,这样保证了系统的安全性。系统里面包含像AppSpawn负责进程的孵化,AppMS负责进程的管理,BMS(Bundle Manager Service)负责包的管理,AMS(Ability Manager Service)负责基本的组件管理,DMS(Distributed Manager Service)负责分布式业务的,是专门的一个底层的服务,我们好多上层的服务都有分布式的业务,经由它进行一个连接的业务的归一,它的主要职责包括像分布式任务管理、跨设备状态和数据同步。
HarmonyOS分布式操作:多端协同
多端协同是为了让我们的应用程序在多个端上完成一个业务,这个时候系统的框架提供了三种能力给应用程序。第一个跨设备组件启动,有了这个能力就可以完成一个并发。第二个是跨设备数据传递,经由一个连接通道进行业务的协作。第三个是分布式共享对象能够让你能够自动的在两个设备或多个设备之间进行状态的自动同步。
右上角的代码片段强调的是一个连接,其实在系统层面提供一个连接看似是很自然的事情,但背后及其复杂,HarmonyOS上的设备跨越了从小到中到大的各种类型的设备,它们的芯片的类型不一样、它们的连接方式也是不一样的,可能有WI-FI、可能有蓝牙等等,这样的连接是无线的,经常有干扰,这种连接还要把底下的网络抖动给过滤掉。
在多端协同框架的基础上,开发者能够开发出跨越多个设备的应用。举例子:你可以在pad上开发一个观看视频的应用,这样借助手机可以对视频进行文字评论和回复,进行一个业务的跨端,这样就可以达到并发、协作、互补。
HarmonyOS分布式操作:跨端迁移
HarmonyOS上任务管理中心可以在一个端上管理所有超级终端上的任务,借助这个任务管理中心,可以轻松的把一个任务从手机端迁移到大屏上,这个过程就是开发者跟系统的一个对接。系统本身通过任务管理中心、通过应用拿到一个状态,应用本身通过回调把状态传递给系统,系统间传递这个状态,开发者就不用关心了,借助迁移框架给用户打造一个连续性、一致性的效果。
HarmonyOS基本架构:分布式窗口管理
不管是多端协同还是跨端迁移,当用户在任务中心拖动时,系统会将拖动的任务窗口牵引到一个虚拟的窗口中渲染,将渲染结果传递给目标的代理窗口填充进去,不仅仅是把视频流的一个传输过去,还有用户的交互事件发回给原始的应用,既有系统多模统一的交互模块,对应用来说是其实感知不到的,不知道事件来自本端还是另一端。
HarmonyOS基本架构:分布式硬件
现在的设备包含的硬件、外设非常多,比如相机、麦克风,包括各种各样的传感器,像手表里每天监测睡眠、每天的步行等健康的一个状态,如果这些设备仅局限在一个设备上使用那就是一个极大的限制。所以在分布式环境的编程中,系统从硬件的角度提供了两个能力,第一个是全局的虚拟化,将所有连接到超级终端上的硬件外设全局的池化,这样能提供给开发者跨端调用,不用自己建立连接,不用自己管理硬件使用权的交换,也不用二次授权,这是因为硬件很多时候是跟隐私相关的,系统已经通过统一的全局虚拟化将这些底层能力打通了。
然后是第二是硬件自动跟随,我们的软件是不局限在一个设备上的,可能是从一个设备迁移到另一个设备,比如这个时候在播放声音,比如这个时候在跟别人视频聊天,那么这些硬件跟随着自动迁移过去,这一点系统在应用框架以及底层的分布式硬件的一个结合完成了这么一个事情,减少开发者的负担。
——————
原创:老王丨【公众号:鸿蒙开发者老王】华为认证讲师 / 腾讯认证讲师 / 鸿蒙开发先行者
HarmonyOS分布式应用框架深入解读相关推荐
- HarmonyOS应用框架如何解决多设备交互问题?
随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,除了我们每天带在身上的手机.手腕上的智能手表.口袋里面的无线耳机.背包里面的PC和Pad.另外家里还有智能电视.智能冰箱等设备,这些年,汽车 ...
- ML:MLOps系列讲解之《MLOps的State(工具和框架)》解读
ML:MLOps系列讲解之<MLOps的State(工具和框架)>解读 目录 MLOps系列讲解之<MLOps的State(工具和框架)>解读 9.MLOps的State(工具 ...
- 分布式应用框架Akka快速入门
转自:分布式应用框架Akka快速入门_jmppok的专栏-CSDN博客_akka 本文结合网上一些资料,对他们进行整理,摘选和翻译而成,对Akka进行简要的说明.引用资料在最后列出. 1.什么是Akk ...
- 鸿蒙harmonyOS 方舟框架ARK使用ets的页面间转场动画的使用
鸿蒙harmonyOS 方舟框架ARK使用ets的页面间转场动画 文章目录 鸿蒙harmonyOS 方舟框架ARK使用ets的页面间转场动画 前言 使用步骤 1.代码,注意使用的位置 2.注释和逻辑 ...
- 鸿蒙harmonyOS方舟框架ARK etsUI 页面跳转动画translate不显示的问题
鸿蒙harmonyOS方舟框架ARK etsUI 页面跳转动画translate不显示的问题 文章目录 鸿蒙harmonyOS方舟框架ARK etsUI 页面跳转动画translate不显示的问题 前 ...
- 鸿蒙HarmonyOS 方舟框架ArkUI eTS在一个ability下创建了很多page发现不能到达
鸿蒙HarmonyOS 方舟框架ArkUI eTS在一个ability下创建了很多page发现不能到达 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 鸿蒙HarmonyO ...
- 鸿蒙harmonyOS方舟框架ARK etsUI 占位和留白的小技巧
鸿蒙harmonyOS方舟框架ARK etsUI 占位和留白的小技巧 文章目录 鸿蒙harmonyOS方舟框架ARK etsUI 占位和留白的小技巧 一.举个例子 二.使用步骤 1.没空白的情况(例子 ...
- 鸿蒙harmonyOS方舟框架ARK etsUI切圆的一个小问题
鸿蒙harmonyOS方舟框架ARK etsUI切圆的一个小问题 文章目录 鸿蒙harmonyOS方舟框架ARK etsUI切圆的一个小问题 前言 使用步骤 1.切圆 2.有点偏离原因时切的宽高跟图片 ...
- 【项目实战课】快速上手目标检测任务,MMdetection框架详细解读与案例实战
欢迎大家来到我们的项目实战课,本期内容是<MMdetection框架解读与案例实战>. 所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲 ...
最新文章
- jdbc mysql查询整行信息_JDBC获取数据库各种信息
- 关于解决多台linux服务器间的文件实时同步问题
- 把一个中文日期时间格式字符串转为日期时间
- 全网最详细的Sentinel安装教程,没有之一!谁反对?(Linux+windows)
- 设计费收费标准2002修订_酒店装修设计费收费标准,酒店装修设计效果图
- 错误 1093 You can't specify target table 'table name' for update in FROM clause
- 【OpenCV】imread读取数据为空
- base-64 字符串中的无效字符。_查找字符串中连续不重复最长字符串和长度的方法...
- Java 按字节获得字符串(中文)长度
- html是超文本标记语言标签,main标签
- 【Python学习之七】类和对象
- png怎么转换成jpg格式?如何转换照片格式为jpg?
- pythonapp爬虫库_GitHub - LJF2402901363/JobSearchApp: 基于Python的flask网络爬虫web项目
- [译] 改善 DaVinci Resolve 性能的 5 个秘诀
- 安卓手机查看已经连接的WIFI密码
- 如何用Deep Learning为股票定价
- php留言板的实验步骤,PHP实现基本留言板功能原理与步骤详解
- 认识V模型、W模型、H模型
- 【数据格式化】数字货币加逗号隔开
- Spring Cloud Gateway(二):Spring Cloud Gateway整合Eureka应用