JSFA調(diào)用PA之一Ability概念及Ability與Internal Ability
原創(chuàng)??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??
引言
最近一段時(shí)間,我會(huì)跟大家討論一下JS FA調(diào)用Java PA。這部分我打算由淺開(kāi)始,先看最基礎(chǔ)的東西,然后我們?cè)俳庾x一下官方給的demo,詳細(xì)了解具體如何用代碼實(shí)現(xiàn)JS FA 調(diào)用Java PA。
所以在這篇文章,主要是一些基礎(chǔ)概念,首先是Ability的概念,然后是JS FA 調(diào)用Java PA的兩種方式的區(qū)別。理解完這些概念后,可以更好地運(yùn)用JS FA調(diào)用Java PA機(jī)制。
Ability
Ability是應(yīng)用所具備能力的抽象,HarmonyOS的用戶應(yīng)用程序包APP由一個(gè)或多個(gè)Hap包組成。每個(gè)Hap可以包含一個(gè)或多個(gè)Ability。Ability分為兩種類(lèi)型:Feature Ability(簡(jiǎn)稱FA)和Particle Ability(簡(jiǎn)稱PA),Ability是HarmonyOS應(yīng)用的基本組成單元,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能。
FA有UI界面,而PA無(wú)UI界面。
FA有多種展現(xiàn)形式,如普通界面形式Page Ability,服務(wù)卡片形式Form等,一般使用JS 語(yǔ)言實(shí)現(xiàn)前臺(tái)界面。PA支持ServiceAbility和Data Ability。ServiceAbility提供后臺(tái)運(yùn)行任務(wù)的能力,如處理復(fù)雜后臺(tái)任務(wù)等。Data Ability用于對(duì)外部提供統(tǒng)一的數(shù)據(jù)訪問(wèn)抽象。這兩個(gè)Ability一般使用Java 語(yǔ)言實(shí)現(xiàn)。
上面三段話是比較官方的解釋,我們現(xiàn)在就Ability這個(gè)單詞理解,它翻譯過(guò)來(lái)就是能力,說(shuō)白了,Ability就是一個(gè)完整的能力模塊(具備完整的邏輯),并且它是一個(gè)應(yīng)用的最小組成單位。
下面我們舉個(gè)例子來(lái)更深地理解Ability,現(xiàn)在就假設(shè)我們要做一個(gè)簡(jiǎn)單的音樂(lè)播放應(yīng)用。
首先從結(jié)構(gòu)上來(lái)看,這個(gè)APP只有一個(gè)Hap,Hap下面就對(duì)應(yīng)著具體的每個(gè)功能模塊(也就是每個(gè)Ability),分別是播放器界面顯示模塊(FA—Page Ability),音樂(lè)控制模塊(PA—Service Ability)和音樂(lè)數(shù)據(jù)訪問(wèn)模塊(PA—Data Ability)。
當(dāng)然,這個(gè)APP也可以由多個(gè)Hap組成,比如:
下面我們就來(lái)看看為什么說(shuō)Ability就是一個(gè)完整的能力模塊。
FA—Page Ability
首先是播放器界面顯示模塊(FA—Page Ability),因?yàn)樗馱eb前端開(kāi)發(fā)范式一樣,具備頁(yè)面的渲染和頁(yè)面之間的簡(jiǎn)單邏輯處理,所以是一個(gè)完整的功能模塊,也就滿足了我剛剛說(shuō)的Ability概念。
PA—Service Ability
接著就是音樂(lè)控制模塊(PA—Service Ability),這部分也類(lèi)比一下我們常見(jiàn)Web開(kāi)發(fā)范式,它就像后端編寫(xiě)的一些復(fù)雜邏輯處理的功能接口,比如隨機(jī)播放音樂(lè),還是順序播放音樂(lè),當(dāng)FA(前端)調(diào)用該P(yáng)A(后端音樂(lè)播放方式接口)時(shí),就可以獲得該能力。一個(gè)接口當(dāng)然具備完整的邏輯處理能力,也是一個(gè)完整的功能模塊,也就滿足了我剛剛說(shuō)的Ability概念。
PA—Data Ability
最后是我們的音樂(lè)數(shù)據(jù)訪問(wèn)模塊(PA—Data Ability),我們把它類(lèi)比成Web開(kāi)發(fā)范式的后端數(shù)據(jù)庫(kù),里面存儲(chǔ)著音頻文件,音樂(lè)封面,用戶評(píng)論等數(shù)據(jù),而要拿到這些數(shù)據(jù),那我們就需要訪問(wèn)這個(gè)數(shù)據(jù)庫(kù)??梢钥闯?,這個(gè)也是一個(gè)完整的能力模塊,它負(fù)責(zé)著整個(gè)應(yīng)用的數(shù)據(jù)訪問(wèn)和存儲(chǔ)。
到這里相信大家都已經(jīng)知道了Ability大概是啥了,下面附一張他們之間的關(guān)系圖
該圖來(lái)源于:https://harmonyos.51cto.com/posts/10189
JS FA 調(diào)用 Java PA的兩種方式
剛剛說(shuō)到了FA(前端)調(diào)用該P(yáng)A(后端音樂(lè)播放方式接口),這個(gè)過(guò)程其實(shí)就是JS FA 調(diào)用 Java PA,它可以類(lèi)比成Web開(kāi)發(fā)范式中前端對(duì)后端的接口請(qǐng)求。
而JS FA 調(diào)用 Java PA是有兩種方式的,分別是Ability和Internal Ability
Ability調(diào)用方式
Ability方式,與FA通過(guò)RPC方式通信,該方式的優(yōu)點(diǎn)在于PA可以被多個(gè)不同的FA調(diào)用。
Internal Ability調(diào)用方式
Internal Ability方式,集成在FA中,適用于與FA業(yè)務(wù)邏輯關(guān)聯(lián)性強(qiáng),響應(yīng)時(shí)延要求高的服務(wù)。該方式僅支持本FA訪問(wèn)調(diào)用。
區(qū)別
從上面兩張圖我們可以看到,Ability方式中PA是一個(gè)單獨(dú)的進(jìn)程,而InternalAbility方式中FA和PA是在同一個(gè)進(jìn)程。
因?yàn)楹笳逷A和FA在同一個(gè)進(jìn)程中,相互通信快,所以對(duì)于延時(shí)低,性能高或者復(fù)用性不高的PA需求,就采用InternalAbility調(diào)用方式。
當(dāng)該P(yáng)A復(fù)用性高,需要被多個(gè)不同的FA調(diào)用時(shí),就采用Ability調(diào)用方式。
小結(jié)
今天這篇文章主要講地了Ability還有兩種調(diào)用方式,這幾天我還會(huì)更新用具體案例來(lái)講解Ability,InternalAbility兩種調(diào)用方式的具體實(shí)現(xiàn)方式。
??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??