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

发布于 2022-1-25 18:09
浏览
5收藏

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

前言

    对于鸿蒙开发的初学者而言,了解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修改
7
收藏 5
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐