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

JSFA称能力概念,能力概念之一,能力和内在能力

时间:2023-03-19 21:24:39 科技观察

更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto。com简介最近和大家一起探讨JSFA调用JavaPA。这部分我打算从浅入深,先看最基础的东西,然后再解读官方demo,进一步了解如何用代码实现JSFA来调用JavaPA。所以在这篇文章中,主要是一些基本的概念,首先是Ability的概念,然后是JSFA调用JavaPA的两种方式的区别。了解了这些概念之后,就可以更好的使用JSFA来调用JavaPA机制了。能力能力是应用程序能力的抽象。HarmonyOS的用户应用包APP由一个或多个Hap包组成。每个Hap可以包含一个或多个能力。Ability分为FeatureAbility(简称FA)和ParticleAbility(简称PA)两种。能力是鸿蒙应用的基本组成单元,可以实现特定的业务功能。FA有UI界面,PA没有UI界面。FA有多种展示形式,如常用界面形式的PageAbility,服务卡片形式的Form等,前端界面一般采用JS语言实现。PA支持ServiceAbility和DataAbility。ServiceAbility提供了在后台运行任务的能力,比如处理复杂的后台任务。数据能力用于对外提供统一的数据访问抽象。这两个Abilities一般都是用Java语言实现的。以上三段是比较官方的解释。我们现在理解Ability这个词,翻译过来就是能力。Ability说白了就是一个完整的能力模块(逻辑完整),是一个应用程序的最小组件单元。.让我们通过一个例子来更深入地理解Ability。现在假设我们要制作一个简单的音乐播放应用程序。首先,从结构上看,这个APP只有一个Hap,后面的Hap分别对应各个具体的功能模块(也就是各个Ability),分别是播放器界面展示模块(FA—PageAbility),音乐控制模块(PA—ServiceAbility)和音乐数据访问模块(PA—DataAbility)。当然这个APP也可以由多个Hap组成。比如我们看看为什么Ability是一个完整的能力模块。FA—PageAbility首先是播放器界面展示模块(FA—PageAbility),因为它像Web前端开发范式,有页面渲染和页面之间简单的逻辑处理,所以是一个完整的功能模块,即,它满足了我刚才提到的Ability概念。PA—ServiceAbility接下来是音乐控制模块(PA—ServiceAbility)。这部分也类似于我们常见的Web开发范式。就像是在后台写了一些复杂的逻辑处理功能接口,比如随机或者顺序播放音乐。音乐,当FA(前端)调用PA(后端音乐播放模式接口)时,可以获得该能力。当然,一个接口具有完整的逻辑处理能力,也是一个完整的功能模块,满足了我刚才说的Ability概念。PA—DataAbility最后是我们的音乐数据访问模块(PA—DataAbility),我们把它类比为Web开发范式的后端数据库,存储音频文件、音乐翻唱、用户评论等数据,而要获取这些数据,那么我们就需要访问这个数据库。可以看出,这也是一个完整的能力模块,负责整个应用的数据访问和存储。说到这里,相信大家已经知道什么是Ability了。下面是它们之间的关系图。图表来自:https://harmonyos.51cto.com/posts/10189JSFA调用JavaPA的两种方式刚才提到FA(前端)调用PA(后端音乐播放接口)。这个过程其实就是JSFA调用JavaPA,可以类比Web开发范式中前端到后端的接口请求。JSFA调用JavaPA有两种方式,分别是Ability和InternalAbility。Ability方法通过RPC与FA通信。这种方式的好处是PA可以被多个不同的FA调用。InternalAbilityCallingMethodInternalAbility方法集成在FA中,适用于与FA业务逻辑强相关,响应时延要求高的业务。该方法只支持本次FA访问调用。从上面两张图可以看出,在Ability模式下,PA是一个单独的进程,而在InternalAbility模式下,FA和PA在同一个进程中。因为后面的PA和FA在同一个进程中,相互通信很快,所以InternalAbility的调用方式用于低延迟、高性能或者复用性不高的PA需求。当PA具有较高的复用性,需要被多个不同的FA调用时,采用Ability调用方式。小结今天这篇文章主要讲Ability和两种调用方式。这几天我会结合具体案例更新Ability和InternalAbility的具体实现方法。更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com