【木棉花】知识分享——Ability的介绍 原创 精华

木棉花_小蓝
发布于 2022-1-25 18:09
浏览
6收藏

  春节不停更,此文正在参加「星光计划-春节更帖活动」

前言

    对于鸿蒙开发的初学者而言,了解HarmonyOS的一些基础理论知识尤为重要。本期的知识分享主要带大家了解鸿蒙开发的核心元素——Ability, 以及梳理PageAbility,Service Ability和Data Ability三者的功能与三者之间的联系。话不多说,我们赶紧发车吧!

【木棉花】知识分享——Ability的介绍-鸿蒙开发者社区

正文

     Ability是鸿蒙开发中的核心元素。现阶段,HarmonyOS通过支持应用以Ability为单位进行部署,以实现应用的相关业务逻辑。所以,作为鸿蒙应用的开发者,我们需要深入理解Ability的概念,探索Ability在实践开发中的应用。

     Ability的概念比较抽象,它的定义是:应用所具备能力的抽象。通俗地讲,Ability是一个应用的重要组成部分(一个完整的应用通常带有很多Ability),它能为应用实现特定的业务功能。Ability分为两种大类型,分别是Feature Ability(FA)Particle Ability(PA),每种类型都开发者提供了不同的模板,以实现不同的功能。

    接下来我将着重介绍三种在鸿蒙开发中尤其重要的Ability——Page Ability,Service AbilityData Ability

    前面我们提到了,Ability分为两种大类型——Feature Ability(FA)和Particle Ability(PA)。其中,FA支持Page Ability(page模板是FA唯一支持的开发模板),而Page Ability用于提供与用户交互的能力(即相关UI能力)。目前,HarmonyOS提供了Java UIJS UI两种UI框架用于实现应用与用户交互的能力,它们都有各自的优点。其中,Java UI提供了细粒度的UI编程接口,这使得应用开发的过程更具灵活性。JS UI(JavaScript UI)则提供了相对高层的UI描述,在实现同一个业务功能的过程中,相较于Java语言,JS语言下编译的代码是简短很多的。所以,运用JS UI可以使应用开发的过程变得更加简单和省力。PA支持Service AbilityData Ability,其中,Service Ability中的Service模板用于提供后台运行任务的能力,Data Ability中的Data模板用于对外部提供统一的数据访问抽象。

    为了厘清Page Ability,Service AbilityData Ability三者之间的关联,以及它们在鸿蒙应用开发中的具体作用,我首先介绍MVC框架的概念。

    MVC(Model View Controller)框架是软件工程中的一个重要的开发理念,它作为一种软件框架模式被当今的软件开发企业广泛使用。在这种框架模式下的开发中,一个应用程序将被分解成三个核心功能部件:Model,ViewController。其中,View表示与用户交互的UI界面(对应页面模块),Model表示企业数据和业务规则(对应服务模块),Controller表示用于调用数据接口的控制器(对应数据模块)。这意味着页面服务数据这三大模块将在开发过程中各自独立,互不影响。因此,企业的技术团队可以专心研究和实践各自负责的模块,而无需关心自己任务之外的模块:负责页面模块的技术团队只需要设计用户界面,负责服务模块的技术团队只需要实现软件后台的业务逻辑,负责数据模块的技术团队只需要管理数据接口和提供数据。当三大模块被设计好之后,再将这三个模块合理拼接,即可得到一个完整的应用程序。显然,利用MVC框架进行应用的实践开发,能大大提升一项软件工程的开发效率。

【木棉花】知识分享——Ability的介绍-鸿蒙开发者社区

    事实上,Page Ability,Service AbilityData 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则给出数据结果响应,为它们提供数据访问接口。

【木棉花】知识分享——Ability的介绍-鸿蒙开发者社区   
  总而言之,Page Ability,Service Ability和Data Ability三者都具有特定的功能,它们共同搭建起了鸿蒙应用的工程架构。

结语

   小蓝本期的知识分享就到此结束了qwq。鉴于笔者能力有限,文章如有错误和不足之处,恳请广大读者不吝赐教。

 

【木棉花】知识分享——Ability的介绍-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2022-1-25 18:09:31修改
8
收藏 6
回复
举报
7条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

好文,关于Ability楼主总结的非常详细。

回复
2022-1-26 09:46:27
木棉花_小蓝
木棉花_小蓝 回复了 红叶亦知秋
好文,关于Ability楼主总结的非常详细。

O(∩_∩)O谢谢

回复
2022-1-26 09:58:38
物联风景
物联风景

很不错,从头到尾看完了,很涨知识

回复
2022-1-26 11:18:53
木棉花_小蓝
木棉花_小蓝

Thank youO(∩_∩)O

回复
2022-1-26 12:51:12
唐佐林
唐佐林

我对 MVC 的理解貌似与楼主有点出入!

 

我认为 MVC 中的 Controller 主要是控制数据在 View 和 Model 之间的传递。

View:展示或编辑来自 Model 的数据,常用于构建用户界面,与用户交互

Controller:Model 与 View 的中间人,负责传递数据,监听事件,管理其他对象的生命周期等

Model:存储数据以及定义如何操作数据

 

在这个定义下:

Page Ability 看作 View 没问题,然而,我觉得 AbilitySlice 看作 View 可能更具体一些。

Data Ability 和 Service Ability 看作 Model 比较合适,至于 Controller 那应该是我们写的业务代码,对应到工程中,即:一系列数据转换的类,比如,将 Model 中的多个数据字段进行处理转换方便 View 呈现的类。

 

相对于 MVC 我认为 HarmonyOS 的设计更接近 MVP 模式。

View:xml 界面描述文件(AbilitySlice 中加载),理论上 AbilitySlice 是该模式中的 View

Presenter:对模型和视图进行操作(PageAbility),从 Model 获取数据,并格式化数据以便在 View 中显示

Model:存储数据以及定义如何操作数据,使用数据(DataAbilty 和 ServiceAbility)

 

另外,HarmonyOS 中的卡片也是 View 的一种表现形式。

已于2022-1-28 15:37:56修改
回复
2022-1-28 09:20:56
木棉花_小蓝
木棉花_小蓝

感谢您的指教O(∩_∩)O

回复
2022-1-28 11:38:05
Der_带鱼
Der_带鱼

纤凝-基于鸿蒙的设计开发模式的讨论 https://harmonyos.51cto.com/posts/10233

回复
2022-1-29 09:25:50
回复
    相关推荐