【木棉花】知識(shí)分享—Ability的介紹
原創(chuàng)??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??
前言
對于鴻蒙開發(fā)的初學(xué)者而言,了解HarmonyOS的一些基礎(chǔ)理論知識(shí)尤為重要。本期的知識(shí)分享主要帶大家了解鴻蒙開發(fā)的核心元素——Ability, 以及梳理PageAbility,Service Ability和Data Ability三者的功能與三者之間的聯(lián)系。話不多說,我們趕緊發(fā)車吧!
正文
Ability是鴻蒙開發(fā)中的核心元素?,F(xiàn)階段,HarmonyOS通過支持應(yīng)用以Ability為單位進(jìn)行部署,以實(shí)現(xiàn)應(yīng)用的相關(guān)業(yè)務(wù)邏輯。所以,作為鴻蒙應(yīng)用的開發(fā)者,我們需要深入理解Ability的概念,探索Ability在實(shí)踐開發(fā)中的應(yīng)用。
Ability的概念比較抽象,它的定義是:應(yīng)用所具備能力的抽象。通俗地講,Ability是一個(gè)應(yīng)用的重要組成部分(一個(gè)完整的應(yīng)用通常帶有很多Ability),它能為應(yīng)用實(shí)現(xiàn)特定的業(yè)務(wù)功能。Ability分為兩種大類型,分別是Feature Ability(FA)和Particle Ability(PA),每種類型都開發(fā)者提供了不同的模板,以實(shí)現(xiàn)不同的功能。
接下來我將著重介紹三種在鴻蒙開發(fā)中尤其重要的Ability——Page Ability,Service Ability和Data Ability。
前面我們提到了,Ability分為兩種大類型——Feature Ability(FA)和Particle Ability(PA)。其中,F(xiàn)A支持Page Ability(page模板是FA唯一支持的開發(fā)模板),而Page Ability用于提供與用戶交互的能力(即相關(guān)UI能力)。目前,HarmonyOS提供了Java UI與JS UI兩種UI框架用于實(shí)現(xiàn)應(yīng)用與用戶交互的能力,它們都有各自的優(yōu)點(diǎn)。其中,Java UI提供了細(xì)粒度的UI編程接口,這使得應(yīng)用開發(fā)的過程更具靈活性。JS UI(JavaScript UI)則提供了相對高層的UI描述,在實(shí)現(xiàn)同一個(gè)業(yè)務(wù)功能的過程中,相較于Java語言,JS語言下編譯的代碼是簡短很多的。所以,運(yùn)用JS UI可以使應(yīng)用開發(fā)的過程變得更加簡單和省力。PA支持Service Ability和Data Ability,其中,Service Ability中的Service模板用于提供后臺(tái)運(yùn)行任務(wù)的能力,Data Ability中的Data模板用于對外部提供統(tǒng)一的數(shù)據(jù)訪問抽象。
為了厘清Page Ability,Service Ability和Data Ability三者之間的關(guān)聯(lián),以及它們在鴻蒙應(yīng)用開發(fā)中的具體作用,我首先介紹MVC框架的概念。
MVC(Model View Controller)框架是軟件工程中的一個(gè)重要的開發(fā)理念,它作為一種軟件框架模式被當(dāng)今的軟件開發(fā)企業(yè)廣泛使用。在這種框架模式下的開發(fā)中,一個(gè)應(yīng)用程序?qū)⒈环纸獬扇齻€(gè)核心功能部件:Model,View和Controller。其中,View表示與用戶交互的UI界面(對應(yīng)頁面模塊),Model表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則(對應(yīng)服務(wù)模塊),Controller表示用于調(diào)用數(shù)據(jù)接口的控制器(對應(yīng)數(shù)據(jù)模塊)。這意味著頁面,服務(wù)和數(shù)據(jù)這三大模塊將在開發(fā)過程中各自獨(dú)立,互不影響。因此,企業(yè)的技術(shù)團(tuán)隊(duì)可以專心研究和實(shí)踐各自負(fù)責(zé)的模塊,而無需關(guān)心自己任務(wù)之外的模塊:負(fù)責(zé)頁面模塊的技術(shù)團(tuán)隊(duì)只需要設(shè)計(jì)用戶界面,負(fù)責(zé)服務(wù)模塊的技術(shù)團(tuán)隊(duì)只需要實(shí)現(xiàn)軟件后臺(tái)的業(yè)務(wù)邏輯,負(fù)責(zé)數(shù)據(jù)模塊的技術(shù)團(tuán)隊(duì)只需要管理數(shù)據(jù)接口和提供數(shù)據(jù)。當(dāng)三大模塊被設(shè)計(jì)好之后,再將這三個(gè)模塊合理拼接,即可得到一個(gè)完整的應(yīng)用程序。顯然,利用MVC框架進(jìn)行應(yīng)用的實(shí)踐開發(fā),能大大提升一項(xiàng)軟件工程的開發(fā)效率。
事實(shí)上,Page Ability,Service Ability和Data Ability之間的關(guān)系也類似于MVC框架中三個(gè)核心部件的關(guān)系。Page Ability的功能是提供與用戶交互的能力,它所作用的對象是UI頁面,所以,Page Abillity主要負(fù)責(zé)頁面模塊,設(shè)計(jì)可視化元素是Page Ability的重頭戲;Service Ability的功能是提供后臺(tái)運(yùn)行任務(wù)的能力,它代表著一個(gè)應(yīng)用程序最核心的服務(wù)功能,所以,Service Ability主要負(fù)責(zé)服務(wù)模塊;Data Ability的功能是對外部提供統(tǒng)一的數(shù)據(jù)訪問抽象,它能為Page Ability和Service Ability調(diào)用數(shù)據(jù)訪問接口以提供相應(yīng)數(shù)據(jù),所以,Data Ability主要負(fù)責(zé)數(shù)據(jù)模塊。由此可見,鴻蒙應(yīng)用的內(nèi)部設(shè)計(jì)也是符合MVC理念的。值得一提的是,主要負(fù)責(zé)某個(gè)模塊的Ability并不是不能參與到其他模塊(比如,Page Ability也可以參與服務(wù)模塊和數(shù)據(jù)模塊),但Page Ability,Service Ability和Data Ability它們各自負(fù)責(zé)的對應(yīng)模塊通常是符合當(dāng)今的主流方向的(即MVC框架模式)。
通常情況下,一個(gè)UI頁面的布局和可視化元素由Page Ability實(shí)現(xiàn)。當(dāng)頁面需要調(diào)用相關(guān)服務(wù)功能時(shí),Page Ability會(huì)向Service Ability發(fā)出服務(wù)請求,于是應(yīng)用的后臺(tái)便會(huì)給出相應(yīng)的響應(yīng)。當(dāng)頁面或者Service Ability需要相關(guān)數(shù)據(jù)時(shí),它們便向Data Ability發(fā)出數(shù)據(jù)請求,Data Ability則給出數(shù)據(jù)結(jié)果響應(yīng),為它們提供數(shù)據(jù)訪問接口。
總而言之,Page Ability,Service Ability和Data Ability三者都具有特定的功能,它們共同搭建起了鴻蒙應(yīng)用的工程架構(gòu)。
結(jié)語
小藍(lán)本期的知識(shí)分享就到此結(jié)束了qwq。
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??