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