想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#zz
在HarmonyOS分布式开发中,应用程序框架是应用开发的基础设施。随着越来越多设备的智能化,在多设备场景下,应用开发面临以下挑战:
1. 多设备的形态差异。 多样化的屏幕适配 - 包括不同大小,不同分辨率,不同形状,横屏、竖屏、折叠屏等; 多样化的交互方式 – 包括语音、触摸、旋钮、键盘、笔、3D手势等
2. 多设备的能力差异。 内存从百KB级到GB级, 主频从百M级到G级等
HarmonyOS的解决策略主要是通过 UI信息结构抽象以及交互事件归一来简化多设备的形态差异下应用开发,同时通过统一的开发范式,协同可伸缩的运行时设计,简化应用在不同设备上部署。如下所示:
典型的HarmonyOS应用部署运行总体视图如下:
一个HarmonyOS应用包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)。通过云侧部署,最终根据设备的形态会下载相应的HAP在端侧执行。应用程序框架主要包含三个部分:
1. Ability – 应用的基础单元。 可免安装,可跨设备调用
2. 用户程序框架 – 包管理/Ability管理/分布式管理
3. UI 编程框架 – 应用的用户界面
注:从应用开发角度,还需要各种Kit的能力(比如网络/数据等设备访问能力),这块不在这里展开。
和传统的单设备场景下不同,HarmonyOS中,应用程序框架深度结合了跨设备的能力。 Ability作为基础的运行单元, 结合底层分布式的基础设施,可以跨设备免安装调度和运行
Ability的定义如下所示:
Ability 的分布式调用, 状态迁移/同步示例如下。通过相应的分布式API设计,简化跨设备的应用开发。
用户程序框架的架构视图和运行视图如下。这里的Ability/包管理机制中会结合DMS(分布式管理服务),相连设备中Ability可以被发现和管理,进行相应的统一调度,方便不同应用在不同设备上运行。
除了上述的Ablilty/用户程序管理,还有一个重要的部分是UI编程框- ACE (Ability Cross-platform Environment), 它支持主流的语言生态 – Java & JS(JavaScript)。 其中 ACE Java 提供相对细粒度的UI编程接口,以命令式方式驱动; ACE JS 则是相对高层的UI描述,以声明式方式驱动。如下图所示:
其中ACE JS 提供了一种统一的跨平台解决方案。 核心设计思路:
1. 开发范式方面,借鉴主流的Web 前端框架设计,降低开发成本
2. 在运行效率方面,在C++层设计实现了统一的声明式UI后端,结合并行化渲染,预编译等机制实现了高性能渲染。在富设备上(比如大屏/手机等),一些典型场景(比如长列表渲染等)可以达到应用秒开,以及滑动满帧的体验
3. 在跨平台方面,实现了独立的自绘制引擎,能够方便的移植到不同平台,结合自适应布局以及多态UI组件能力,实现了实时的跨端的一致性渲染体验 (PC上的UI 渲染路径和设备上一致),并能够在PC上同时进行多设备以不同方式渲染。
在ACE JS 中,主要模块(前端框架,JS 引擎,以及渲染后端实现等)是可伸缩设计的,它也具备运行在极小的设备上的能力(比如百K级内存的设备),并基于统一的开发范式。如下所示:
HarmonyOS的应用程序框架主要围绕多设备,跨设备的场景重点设计和实现了应用的基础单元,应用和包管理,UI编程框架,并结合相应的底层分布式基础设施进一步简化了多设备/跨设备场景下的应用开发。
想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#zz
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...