跟阿斌一起學鴻蒙(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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM