在進一步實踐之前,需要先弄明白一個概念: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分為兩大類:
- 帶顯示功能的Ability,Feature Ability(FA 功能能力)
- 不帶顯示功能的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