跟阿斌一塊兒學鴻蒙(2). Ability vs App?

在進一步實踐以前,須要先弄明白一個概念:Ability。程序員

不知道你有沒有注意到,使用鴻蒙開發工具DevEco Studio建立項目時,咱們選擇建立的是一個個Ability。編程

這是爲何呢?網絡

 

# 1. 鴻蒙OS的定位分佈式

 

這須要從鴻蒙OS的自我定位提及:鴻蒙OS是一個**分佈式操做系統**。工具

 

## 「單機」操做系統開發工具

 

在咱們目前經常使用的操做系統中,不論是手機仍是電腦,App(Application,應用程序),是很是常見的一個概念,是咱們解決問題的基本對象。測試

* 要跟朋友聊天,打開聊天App。
* 要聽歌,打開音樂App。spa

* 要看視頻,能夠打開各類視頻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

【免費直播課-基於鴻蒙IoT套件的猜數字遊戲開發實戰分享】

相關文章
相關標籤/搜索