JS FA调用Java PA(一)Ability概念及Ability与Internal Ability调用方式

  • 引言
  • Ability
    • FA—Page Ability
    • PA—Service Ability
    • PA—Data Ability
  • JS FA 调用 Java PA的两种方式
    • Ability调用方式
    • Internal Ability调用方式
    • 区别
  • 小结

引言

​ 最近一段时间,我会跟大家讨论一下JS FA调用Java PA。这部分我打算由浅开始,先看最基础的东西,然后我们再解读一下官方给的demo,详细了解具体如何用代码实现JS FA 调用Java PA。

​ 所以在这篇文章,主要是一些基础概念,首先是Ability的概念,然后是JS FA 调用Java PA的两种方式的区别。理解完这些概念后,可以更好地运用JS FA调用Java PA机制。

Ability

​ Ability是应用所具备能力的抽象,HarmonyOS的用户应用程序包APP一个或多个Hap包组成。每个Hap可以包含一个或多个Ability。Ability分为两种类型:Feature Ability(简称FA)Particle Ability(简称PA)Ability是HarmonyOS应用的基本组成单元,能够实现特定的业务功能。

​ FA有UI界面,而PA无UI界面。

​ FA有多种展现形式,如普通界面形式Page Ability服务卡片形式Form等,一般使用JS 语言实现前台界面。PA支持ServiceAbilityData Ability。ServiceAbility提供后台运行任务的能力,如处理复杂后台任务等。Data Ability用于对外部提供统一的数据访问抽象。这两个Ability一般使用Java 语言实现。

​ 上面三段话是比较官方的解释,我们现在就Ability这个单词理解,它翻译过来就是能力,说白了,Ability就是一个完整的能力模块(具备完整的逻辑),并且它是一个应用的最小组成单位

​ 下面我们举个例子来更深地理解Ability,现在就假设我们要做一个简单的音乐播放应用

​ 首先从结构上来看,这个APP只有一个Hap,Hap下面就对应着具体的每个功能模块(也就是每个Ability),分别是播放器界面显示模块(FA—Page Ability),音乐控制模块(PA—Service Ability)和音乐数据访问模块(PA—Data Ability)。

​ 当然,这个APP也可以由多个Hap组成,比如:

下面我们就来看看为什么说Ability就是一个完整的能力模块

FA—Page Ability

​ 首先是播放器界面显示模块(FA—Page Ability),因为它像Web前端开发范式一样,具备页面的渲染和页面之间的简单逻辑处理,所以是一个完整的功能模块,也就满足了我刚刚说的Ability概念。

PA—Service Ability

​ 接着就是音乐控制模块(PA—Service Ability),这部分也类比一下我们常见Web开发范式,它就像后端编写的一些复杂逻辑处理的功能接口,比如随机播放音乐,还是顺序播放音乐,当FA(前端)调用该PA(后端音乐播放方式接口)时,就可以获得该能力。一个接口当然具备完整的逻辑处理能力,也是一个完整的功能模块,也就满足了我刚刚说的Ability概念。

PA—Data Ability

​ 最后是我们的音乐数据访问模块(PA—Data Ability),我们把它类比成Web开发范式的后端数据库,里面存储着音频文件,音乐封面,用户评论等数据,而要拿到这些数据,那我们就需要访问这个数据库。可以看出,这个也是一个完整的能力模块,它负责着整个应用的数据访问和存储。

​ 到这里相信大家都已经知道了Ability大概是啥了,下面附一张他们之间的关系图

该图来源于:https://harmonyos.51cto.com/posts/10189

JS FA 调用 Java PA的两种方式

​ 刚刚说到了FA(前端)调用该PA(后端音乐播放方式接口),这个过程其实就是JS FA 调用 Java PA,它可以类比成Web开发范式中前端对后端的接口请求。

​ 而JS FA 调用 Java PA是有两种方式的,分别是AbilityInternal Ability

Ability调用方式

​ Ability方式,与FA通过RPC方式通信,该方式的优点在于PA可以被多个不同的FA调用

Internal Ability调用方式

​ Internal Ability方式,集成在FA中,适用于与FA业务逻辑关联性强,响应时延要求高的服务。该方式仅支持本FA访问调用

区别

​ 从上面两张图我们可以看到,Ability方式PA是一个单独的进程,而InternalAbility方式FA和PA是在同一个进程

​ 因为后者PA和FA在同一个进程中,相互通信快,所以对于延时低性能高或者复用性不高的PA需求,就采用InternalAbility调用方式。

​ 当该PA复用性高需要被多个不同的FA调用时,就采用Ability调用方式。

小结

​ 今天这篇文章主要讲地了Ability还有两种调用方式,这几天我还会更新用具体案例来讲解Ability,InternalAbility两种调用方式的具体实现方式。

注:本文最后两张图来自HarmonyOS开发者公众号微课堂
https://mp.weixin.qq.com/s/cURU0x_TE4DsymlabiCfhA

(HarmonyOS)JS FA调用Java PA(一)Ability概念及Ability与Internal Ability调用方式相关推荐

  1. 鸿蒙系统-手机-JS FA(Feature Ability)调用Java PA(Particle Ability)

    鸿蒙系统-手机-JS FA(Feature Ability)调用Java PA(Particle Ability) 官方文档:https://developer.harmonyos.com/cn/do ...

  2. 【视频】应用开发第2期:JS FA调用Java PA

    应用开发第2期:JS+FA调用Java 本期内容将会为大家介绍如何实现JS FA调用Java PA,并结合样例代码进行详细说明. JS FA调用Java PA机制:文档中心 FA调用PA开发效率提升插 ...

  3. Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用父类静态成员/方法

    只能通过当前类名NioUtil调用静态成员 package com.zxl.scalaimport cn.hutool.core.io.{FileUtil, IoUtil, NioUtil} impo ...

  4. c# 调用java webservice 参数获取不到_用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!...

    用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...

  5. Java 入门之1:浅谈Java的最基本概念及JDK、JRE、JVM之间的关系和区别

    目录 前言: 一句话介绍Java语言的故事 一句话概括Java的特性和优势 两句话阐述JAVA_HOME环境变量和classpath环境变量的作用是什么 简述JDK.JRE.JVM之间的关系 Java ...

  6. PHP中调用Java类的两个办法

    Java语言功能强大,因此在许多情况下在php中来调用Java的功能将十分有用.在php中调用Java语言有两种方法,一种是使用php中的Java扩展模块,另一种是使用minij2ee应用服务器提供的 ...

  7. 本地方法(JNI)——调用 java 方法

    [0]README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)--调用 java 方法 的基础知识 : 2) C语言调用java 方法,包括: ...

  8. java uipath_10.3 UiPath如何调用Java

    调用Java方法(Invoke Java Method)的介绍 从Java Scope中的.jar加载的方法中调用指定的Java方法.并结果存储在变量中 二.Invoke Java Method 在U ...

  9. 10 3 java_10.3 UiPath如何调用Java

    调用Java方法(Invoke Java Method)的介绍 从Java Scope中的.jar加载的方法中调用指定的Java方法.并结果存储在变量中 二.Invoke Java Method 在U ...

最新文章

  1. 史上比较用心的纯代码实现 AutoLayout
  2. Vector的简单使用
  3. python怎么解释语言_python是解释型语言吗
  4. oracle临时表经常被锁_【赵强老师】Oracle数据库的存储结构
  5. 本地索引和全局索引的适用场景
  6. 【转载】Java中String类的方法及说明
  7. 各类手机开发平台介绍(转载)
  8. silverlight 碰撞检测
  9. 何先振第2期:Java语言描述与编写第一个程序
  10. 算术平均数及几何平均数
  11. Metasploit -- 渗透攻击模块(exploit)
  12. Unix传奇历史与回忆-读史使人明智,鉴以往而知未来
  13. 密码学总结(一) 数学常识
  14. vue路由报错Navigating to current location (“/login“) is not allowed踩坑总结
  15. android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、风扇叶片效果等源码...
  16. 因子分析累计贡献率_[2018年最新整理]多元统计分析之因子分析.doc
  17. 强化学习笔记:多臂老虎机问题(2)--Python仿真
  18. oracle数据库主机CPU使用率高问题的分析及SQL优化
  19. 从芯片小厂成为显卡巨头,23年里,N厂经历了什么?
  20. 人机大战结局,为何日本公众的看法与我们不同?

热门文章

  1. Vue antdv a-select 内容搜索过滤(filterOption)
  2. 群晖NAS使用2步身份验证登录技巧
  3. CanOpen通信协议python实现
  4. Node.js结合wechaty实现个人微信机器人助手
  5. MotoSimEG-VRC软件:多机器人信号交互与PLC功能
  6. 从键盘上输入一个字符,如果它是小写字母,则把它转换成大写字母输出;否则,直接输出。
  7. [Linux] Linux不分区硬盘挂载
  8. 成都聚华祥科技:标题的关键词组合技巧
  9. 文本分析--NLTK自然语言处理
  10. 计算机考研与就业的利弊分析,考研和就业怎么选择 考研和就业的利弊分析