跟阿斌一起學鴻蒙(4). 分布式Hello Harmony的N種寫法
https://harmonyos.51cto.com/#zz
鴻蒙OS是一個分布式操作系統,而Ability作為它調度的基本單元,那么,一個分布式Hello Harmony可以有幾種寫法呢?
# 分布式Hello Harmony用例
## 1. 根據Ability類型
### 1). FA <-> FA
FA = Feature Ability,用于顯示的前臺能力。
可以理解為兩個前端應用在協作。
FA/FA模式的Hello Harmony,就是我說Hello, 你說Harmony。
在鴻蒙OS中,FA與FA的協作,有三種方式:
* 啟動,即一個FA啟動另一個FA
這嚴格來說并不算是一個協作,只是與別的操作系統類似,鴻蒙OS也提供了不同應用或者進程相互啟動的能力。
* 遷移(轉移,流轉,接力),即一個界面從一臺設備,轉移到另一臺設備上。
例如,導航,查詢的時候在手機上,開車的時候在汽車車機上,走路的時候在手表上,甚至耳機上。
例如,視頻播放,從手機轉移到電視。
* 協同,多臺設備在各自的界面上一起完成同一個工作。
例如,多人一起修改一個文檔。
例如,多人一起聯機玩游戲。
需要注意的是,在鴻蒙OS的設計中,FA之間的協同,如果不依靠PA的幫助,是很難直接進行的。這就好像是MVC架構中,為了解耦合,不同的View之間通常并不直接進行交互。
我們當然可以利用一些非鴻蒙OS獨有的特性,例如網絡,在不同FA之間搭建起溝通的橋梁,不過,這就非常不鴻蒙了。
### 2). FA <-> PA
PA = Particle Ability,不帶顯示的后臺服務能力。
前臺界面與后臺服務進行協作。
FA/PA的Hello Harmony,就是你大聲說Hello, 我小聲說Harmony。
這種交互,即使是在現在的APP開發中,也是一種常見的前后端分離的架構設計。
利用鴻蒙OS的多設備連接能力,可以方便實現,在最適合顯示(交互)的設備上運行FA,而在算力更強更富余的設備上運行PA。
例如,用手機與電視進行游戲,手機充當游戲主機(和手柄),而電視充當顯示。
### 3). PA <-> PA
不同后臺服務進行協作。
PA/PA的Hello Harmony,就是你小聲對我說Hello,我也小聲回復Harmony。
這樣,不同的PA可以專注負責自己的業務,然后通過組合,完成更復雜的任務。
其實,Data Ability 可以認為就是專門處理數據存儲的任務的一個PA,而普通Service Ability則是負責處理具體的任務,利用DA,可以輕松為一個任務增加存儲功能。
## 2. 根據應用
* 1). 同應用
* 2). 不同應用
其實,應用的概念在鴻蒙OS中已經被邊緣化了,而Ability才是現在的C位。
所以,并不存在應用A說Hello,應用B說Harmony這種場景,只有Ability A說Hello,Ability B說Harmony的場景。
基于這個設定,其實,我們不應關心Ability屬于哪個應用,因為每個Ability都是獨立的。
如果你還是繞不過來,你可以暫時直接認為一個Ability就是一個應用。但是,要注意,在鴻蒙OS中,一個Ability很可能沒法像傳統的App那樣,獨立完成一個任務。
而在代碼的組織和編寫時,對于共同完成一個任務的不同Ability,它們之間難免會有交集,而這,也僅僅限于代碼編寫時,在運行時,每個Ability都有自己的進程和內存空間。
## 3. 根據設備
* 1). 單設備
* 2). 跨設備
鴻蒙OS天生具有連接多設備的能力,而對于開發者來說,需要考慮的是當前環境下有多少已經連接的設備,而不是要去連接哪臺設備。
具體的說,就是,我們不需要考慮網絡的問題,而是要考慮,在當前環境中,用哪個設備來完成任務更合理。
有多設備環境下的分布式Hello Harmony,
* 可以每臺設備輪流說Hello Harmony,即你說Hello Harmony,我也說Hello Harmony。
* 也可以所有設備一起完成一個Hello Harmony,即你說Hello 我說 Harmony。
# 參考文檔
* Ability 概述
> https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852
* 分布式任務調度
> https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-distributed-overview-0000001050419345
# 后續
接下來,我將對不同的寫法,一一進行講解,歡迎持續關注。
https://harmonyos.51cto.com/#zz