概括来说,HarmonyOS具备如下特性。
HarmonyOS把各终端硬件的能力虚拟成可共享的能力资源池,让应用通过系统调用其所需的硬件能力。在该架构下,硬件能力类似于活字印刷术中的一个个单字字模,可以被无限次重复使用。简单来说,各终端实现了硬件互助、资源共享。应用拥有了调用远程终端的能力,像调用本地终端一样方便;而用户收获一个多设备组成的超级终端。能够实现这些的原因主要基于以下几方面。
1. 分布式软总线
分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。分布式软总线如图1-1所示。
图1-1 分布式软总线
简言之,分布式软总线提供了多设备连接能力。
2. 分布式设备虚拟化
分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。针对不同类型的任务,分布式设备虚拟化平台为用户匹配并选择能力合适的执行硬件,让业务连续地在不同设备间流转,充分发挥不同设备的资源优势。分布式设备虚拟化如图1-2所示。
图1-2 分布式设备虚拟化
以无人机为例,传统的无人机视频分享方式如下。
(1)拍摄无人机的画面。
(2)将无人机拍摄的视频保存下来。
(3)通过通信软件将视频进行分享。
而在分布式设备虚拟化后,无人机可以被当作手机的一个摄像头,在视频通话软件中,可以直接将无人机的摄像头进行实时分享。
3. 分布式数据管理
分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件。分布式数据管理如图1-3所示。
图1-3 分布式数据管理
在全场景新时代,每个人拥有的设备越来越多,单一设备的数据往往无法满足用户的诉求,数据在设备间的流转变得越来越频繁。以一组照片数据在手机、平板、智慧屏和PC之间相互浏览和编辑为例,需要考虑到照片数据在多设备间如何存储、共享和访问。HarmonyOS分布式数据管理的目标就是为开发者在系统层面解决这些问题,让应用开发变得简单。它能够保证多设备间的数据安全,解决多设备间数据同步、跨设备查找和访问的各种关键技术问题。
HarmonyOS分布式数据管理对开发者提供分布式数据库、分布式文件系统和分布式检索能力,开发者在多设备上开发应用时,对数据的操作、共享、检索可以跟使用本地数据一样处理,为开发者提供便捷、高效和安全的数据管理能力,大大降低了应用开发者实现数据分布式访问的门槛。同时,由于在系统层面实现了这样的功能,因此可以结合系统资源调度,大大提升跨设备数据远程访问和检索性能,让更多的开发者可以快速上手,实现流畅分布式应用。
4. 分布式任务调度
分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。
图1-4以应用迁移为例,简要地展示了分布式任务调度能力。
图1-4 分布式任务调度
在传统的终端设备上进行跨设备的应用访问时,需要应用自己完成服务发现、连接、命令监听、命令解析等一系列工作,无论是应用开发者自己开发还是使用第三方的库,都让应用开发过程变得沉重。分布式任务调度就是在系统层面为应用提供了通用的分布式服务,让应用开发可以聚焦在业务实现上。HarmonyOS在分布式任务调度上充分考虑了应用开发者的使用便利性,提供了应用信息自动同步能力,通过查询远程Ability接口,既可以指定Ability查询设备列表,也可以指定设备标识查询Ability列表,开发者可以根据实际场景灵活使用。在API形式上保持了和本地使用基本一致,仅仅增加了远程设备标识的参数,这让开发者使用起来完全没有障碍,开发者生态十分友好。例如,在手机和手表间进行应用协同,在游乐场游玩的场景,用户可以全程不使用手机,解决了在游乐场游玩过程中手机容易丢失、损坏的痛点,非常好地提升了用户体验。
HarmonyOS提供了用户程序框架、Ability框架以及UI(User Interface,用户界面)框架,支持应用开发过程中对多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。一次开发、多端部署如图1-5所示。
图1-5 一次开发、多端部署
HarmonyOS通过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,能够适配不同类别的硬件资源和功能需求。HarmonyOS支撑通过编译链关系去自动生成组件化的依赖关系,形成组件树依赖图。HarmonyOS支撑产品系统的便捷开发,降低硬件设备的开发门槛。
(1)支持各组件的选择(组件可有可无):根据硬件的形态和需求,可以选择所需的组件。
(2)支持组件内功能集的配置(组件可大可小):根据硬件的资源情况和功能需求,可以选择配置组件中的功能集。例如,选择配置图形框架组件中的部分控件。
(3)支持组件间依赖的关联(平台可大可小):根据编译链关系,可以自动生成组件化的依赖关系。例如,选择图形框架组件,将会自动选择依赖的图形引擎组件等。