跟阿斌一起学鸿蒙(2). Ability vs App?
在进一步实践之前,需要先弄明白一个概念: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吧。
作者:IT男阿斌
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
学会这几招,轻松搞定领导最爱看的动态数据报表
不知不觉2020就剩最后一个月,接下来的12月相信都是大家最忙的时候,各种年度总结、汇报、答辩述职,这其中更加少不了各种数据统计,分析工作。 不论在哪个公司,一到月底、季末、年底,财务、人事、销售等等业务部都要写各种各样的数据报表,但是领导拿到手却很少仔细看,自己辛苦加班好几天的成果也换不来领导的一句夸奖。 为什么领导不看? 首要原因就是报表太丑,很多人做出来的报表都是简单的数据表格,比如下面这样的,密密麻麻的数据,最后一列汇总计算一下,让调3个地区的销售分析表,交上来就是3张样式一样,数据更换了的表格 而报表最根本的目的是要传达数据信息,而不是单纯展示数据,报表是给人看的,所以好的报表绝对不是枯燥的表格堆叠,而应该是简洁、美观、准确、讲人话的,也就是说报表也讲究“颜值”,而让报表动起来则是提高报表颜值最省力的方法,也是我们说的动态报表 动态报表的作用不光是提升报表颜值,同样也让报表展示的信息更加丰富,同时也省去了很多的重复制表工作。比如上面这样报表,通过报表之间的联动和钻取,以及筛选条件,在一张报表中呈现更多的数据信息,让领导快速了解到数据展现的业务信息。 如何实现动态报表 最...
- 下一篇
华为云鲲鹏云服务器介绍
由于我的服务器到期,所以现在重新选购了一款服务器,基于ARM架构的华为云鲲鹏ECS。 ▣ 博主主站地址:微笑涛声 【www.cztcms.cn】 ▣ 博主其他平台: CSDN 简书 开源中国 思否 华为云博客 ◈ 华为鲲鹏处理器,坚持持续创新 华为海思设计的鲲鹏(Kunpeng)920系列芯片是兼容ARMv8A架构的高性能处理器片上系统,也是华为 “算、存、传、管、智”五个产品系列构成的鲲鹏芯片家族的核心产品。 鲲鹏处理器是华为在2019年1月向业界发布的高性能数据中心处理器。 目的在于满足数据中心的多样性计算和绿色计算需求 ,具有高性能,高带宽,高集成度,高效能四大特点。 ◈ 产品系列 低功耗级鲲鹏916处理器:采用16nm工艺,支持24个内核,主频2.4GHz,功耗低至75w。 极致效能级鲲鹏920-3226和鲲鹏920-4826处理器:采用7nm工艺,支持32和48个内核,主频2.6GHz,单位功耗的计算性能表现优秀。 极致性能级鲲鹏920-6426处理器:采用7nm工艺,支持64个内核,主频2.6GHz。 ◈ 华为云鲲鹏云服务概述 华为云鲲鹏云服务基于鲲鹏处理器等多元基础设施,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8