跟阿斌一起学鸿蒙(2). Ability vs App?

系统
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz

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

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

https://harmonyos.51cto.com/#zz

在进一步实践之前,需要先弄明白一个概念:Ability。

不知道你有没有注意到,使用鸿蒙开发工具DevEco Studio创建项目时,我们选择创建的是一个个Ability。


这是为什么呢?

# 1. 鸿蒙OS的定位

这需要从鸿蒙OS的自我定位说起:鸿蒙OS是一个**分布式操作系统**。

## “单机”操作系统

在我们目前常用的操作系统中,不管是手机还是电脑,App(Application,应用程序),是非常常见的一个概念,是我们解决问题的基本对象。

* 要跟朋友聊天,打开聊天App。

* 要听歌,打开音乐App。

* 要看视频,可以打开各种视频App。

* 要写文档,打开Word或者PPT。

与鸿蒙操作系统不同,这些“单机”操作系统通常是

* 1). 运行在同一类设备上,对于不同类型的设备,通常运行不同的操作系统。

* 2). 设备与设备之间除了是物理上是分隔开的,在操作系统层面上也是分隔开的。

* 3). 设备之间的连接,通常是由需要连接的应用来主动发起,然后经过操作系统通过网络进行连接。

* 4). App应用,是操作系统管理的基本单元。

## 分布式操作系统

而鸿蒙OS所谓的分布式是怎么样的呢?他是

* 1). 在不同的设备运行着相同的鸿蒙OS。

* 2). 设备与设备之间虽然物理上是分隔开的,但是在操作系统层上是连接在一起的,而且是由操作系统自动连接。

* 3). 应用之间不再需要显式发起网络连接,而是直接相互通信。

* 4). 一个App(应用)由多个Ability(能力)组成,而这些Ability是操作系统管理的基本单元。

于是,在鸿蒙OS上,如果你想

* 要跟朋友聊天,你可以在手机上聊天,在电视上聊天,在车里、甚至在手表上聊天

* 要听歌,你可以用音箱听,用手表看字幕,点赞和收藏

* 要看视频,可以在电视上看,在手机上发弹幕

* 要写文档,可以在电脑上编辑,在手机上浏览和审批

更重要的是,这些操作都不需要通过互联网进行任何数据传输和消息同步,因为通过鸿蒙OS,你是

* 同一时间

* 在不同设备上

* 使用同一个App。

当然,这些场景,并不是鸿蒙OS的专利,即使是在现在的环境现在的操作系统上,只要产品经理认为有需求,程序员们依然可以为你实现,只是实现起来会相对麻烦,比如各种远程通信,各种数据和状态的同步,还有各种联调和测试。

而鸿蒙OS,将很多麻烦的处理过程整合到操作系统中,借此希望让程序员们可以用更优雅更自然的方式来实现这些功能,避免过早的头秃。

# 2. Ability

而Ability,就是鸿蒙OS为程序员们提供的基础设施之一。

## Ability 分类

鸿蒙OS将Ability分为两大类:

1. 带显示功能的Ability,Feature Ability(FA 功能能力)

2. 不带显示功能的Ability,Particle Ability(PA)

PA 再细分为Service Ability(服务能力)和 Data Ability(数据能力)

## Ability = MVC?

咋一看,这不就是MVC嘛?

* View = Feature Ability 负责显示

* Controller = Service Ability 负责业务逻辑

* Model = Data Ability 负责数据管理

如果用我们熟知的概念去套鸿蒙OS的概念,MVC也许确实是最接近的一个。

但是,可以用MVC去理解,不要被MVC所套住。

学一个新事物,最好还是试着去按照它的设计思路去思考,而不是用旧有的思路去套它的设计,否则,难免会冒出:

* 为什么安卓或者iOS有这个,而鸿蒙OS没有?

或者,

* 鸿蒙OS为什么要设计这么一个玩意儿?

等等摸不着头脑的问题。

## Ability是分布式调度的基本单元

Ability是鸿蒙OS作为操作系统进行任务调度的基本单元。

鸿蒙OS在操作系统层将不同设备连接到一起,变成一个超级虚拟设备,为了适应这样的需求:

* Feature Ability,运行在前台,用于交互,需要适应不同的显示和输入方式。

* Particle Ability,运行在后台,负责与交互无关的业务,这类业务可以运行在任何有足够算力和资源的设备上,对于重度业务,可以主动选择运行在算力富余的设备上,甚至将任务分配到多个设备上进行分布式计算。

* 不同的Ability可以灵活组合,以适应不同的使用需求和运行场景。

* Ability要足够轻量,这样,才能容易调度,甚至在被从一个设备调度到另一个设备上时也足够流畅。

这个设计的关键之一是,不同设备间稳定而快速的连接,有了这个可靠的基础,程序员才可以专注于Ability的开发,而不用关心设备的连接和数据的传输。

而这,正是鸿蒙OS承诺的**分布式软总线**提供的基础功能。

 

# 3. 分布式编程思想?

所以,在鸿蒙OS之上进行应用开发,可能需要一些分布式编程思想,而业务的开发,可能,首先要从怎样将一个传统的App分解为不同的Ability开始,举个例子,

比如,……

比如,……

比如,怎样开发一个分布式的Hello Harmony呢?

就这样,下一次,我们就来撸一个分布式的Hello Harmony吧。

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

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

https://harmonyos.51cto.com/#zz

 

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

2020-12-01 09:40:15

Harmony

2020-12-10 11:23:52

鸿蒙Harmony分布式

2020-12-07 09:55:19

鸿蒙开发DevEco Stud

2022-12-02 14:20:09

Tetris鸿蒙

2022-11-29 16:35:02

Tetris鸿蒙

2023-03-30 09:32:27

2022-11-14 17:01:34

游戏开发画布功能

2022-12-06 15:39:16

鸿蒙主干代码

2022-09-27 16:03:51

羊了个羊鸿蒙

2022-08-19 19:02:20

开源鸿蒙操作系统

2023-03-30 09:19:54

SELinux安全子系统

2023-02-27 16:30:32

鸿蒙开源协议分析

2022-10-10 14:47:04

蓝牙应用鸿蒙

2023-04-04 09:24:11

鸿蒙HiDumper

2023-01-03 15:09:10

鸿蒙常用工具

2022-10-20 16:40:16

JS应用控制LED鸿蒙

2022-10-09 15:05:50

NAPI框架鸿蒙

2021-02-03 09:59:02

鸿蒙HarmonyOS应用开发

2022-11-24 14:34:41

Hap程序鸿蒙

2023-03-15 16:19:03

BinderIPC工具
点赞
收藏

51CTO技术栈公众号