【木棉花】知识分享—Ability的介绍

原创
系统 OpenHarmony
Page Ability,Service Ability和Data Ability三者都具有特定的功能,它们共同搭建起了鸿蒙应用的工程架构。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​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。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://harmonyos.51cto.com​

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-12-01 15:40:23

鸿蒙HarmonyOS应用

2021-12-01 15:38:33

鸿蒙HarmonyOS应用

2021-11-02 14:55:42

鸿蒙HarmonyOS应用

2021-09-17 14:47:33

鸿蒙HarmonyOS应用

2013-07-08 15:41:07

Ubuntu

2011-11-04 17:26:12

2022-02-17 21:05:26

AbilityJS FAJava PA

2013-08-27 14:40:03

系统监控

2009-09-15 18:41:08

Python学习资料

2010-04-30 14:55:09

Unix系统

2009-09-22 10:57:42

Hibernate专业

2009-06-12 09:07:01

EJB入门

2015-07-29 10:36:05

hadoop数据挖掘

2010-04-30 01:00:08

Unix shell

2011-04-13 14:19:52

Asp.Net.Net

2010-05-11 19:08:36

Unix系统

2010-04-22 12:42:24

Aix操作系统

2009-04-02 13:45:36

网关网络

2022-03-30 08:37:32

Python函数编程自定义函数

2022-03-02 15:35:57

UI界面容器组件鸿蒙
点赞
收藏

51CTO技术栈公众号