HarmonyOS分散式應用框架深入解讀

隨著越來越多裝置的智慧化,在多裝置場景下應用開發面臨以下挑戰:從多裝置的形態差異(不同大小、不同解析度、不同形狀的螢幕,多樣化的互動方式–按鈕、觸屏、鍵盤、語音、手勢等),多裝置的能力差異(記憶體從百 KB級到GB級裝置)。

針對上述挑戰,HarmonyOS作為一款面向萬物互聯時代的、全新的分散式作業系統,將迎刃而解,這得益於HarmonyOS的分散式應用框架,這些多裝置組成一個超級終端,充分發揮各裝置能力,從而實現多裝置間多端協同、跨端遷移,為萬物互聯奠定基礎。

針對HarmonyOS的分散式應用框架後面章節將分別深入解讀。

一、HarmonyOS使用者程式

HarmonyOS分散式應用框架深入解讀

在HarmonyOS系統上應用分為:HarmonyOS應用、原子化服務,HarmonyOS應用就是跟傳統應用一樣需要在應用商店下載安裝,原子化服務是具有獨立操作入口、免安裝、實現特定功能,比微信小程式功能更強大,加上HarmonyOS的跨裝置、分散式的能力及應用,二者具有無限能力。

從開發者角度看,HarmonyOS上基本的元件分為3+1,其中3代表三個Ability,分別是:PageAbility:負責使用者介面的顯示,DataAbility:負責資料的管理,對外部提供統一的資料訪問抽象,ServiceAbility:負責後臺執行的任務。1代表AbilityForm服務卡片,可以將重要資訊或操作前置於此,以達到服務直達,減少體驗層級的目的。3+1元件進行組合開發出HarmonyOS上的應用,其打包格式為HAP(HarmonyOS Ability Package),根據HAP是否有介面分為:FA(Feature Ability)、PA(Particle Ability)兩種型別。

HarmonyOS分散式應用程式框架整體架

HarmonyOS分散式應用框架深入解讀

從應用框架的角度對系統的分層,共分5層,分別如下:

底層軟體層:包括核心和HAL、軟匯流排,這一層開發者不會用著,一般默默地為開發者和使用者服務。

基礎服務層:包括分散式排程管理、分散式資料管理、分散式硬體管理、分散式許可權管理。

核心服務層:包括全域性包管理、分散式執行管理,全域性包管理:HarmonyOS上的應用不再侷限於單臺裝置上,包管理還包括跨虛擬終端上的所有裝置。分散式執行管理負責應用動態執行時管理,包括協同框架、遷移框架、服務卡片框架。

應用介面層:是系統提供給廣大開發人員開發應用的介面層,不管系統底層實現有多複雜,但提供給開發者的介面儘可能的簡單。這層包括之前提到的基本元件,還有ACE(Ability Cross-platform Environment)框架,在多裝置的互動模型下,一致性很重要,從UI的角度怎麼讓UI框架適應大屏、小屏、長屏、方屏、橫屏等,這個一致性很大程度是由ACE框架支撐的。

使用者程式層:這層就是廣大開發者開發的應用供使用者使用。

HarmonyOS分散式應用程式框架執行檢視

HarmonyOS分散式應用框架深入解讀

這是應用框架執行時的檢視,執行時每個應用在獨立的沙箱裡面,彼此隔離互不影響,這樣保證了系統的安全性。系統裡面包含像AppSpawn負責程序的孵化,AppMS負責程序的管理,BMS(Bundle Manager Service)負責包的管理,AMS(Ability Manager Service)負責基本的元件管理,DMS(Distributed Manager Service)負責分散式業務的,是專門的一個底層的服務,我們好多上層的服務都有分散式的業務,經由它進行一個連線的業務的歸一,它的主要職責包括像分散式任務管理、跨裝置狀態和資料同步。

HarmonyOS分散式操作:多端協同

HarmonyOS分散式應用框架深入解讀

多端協同是為了讓我們的應用程式在多個端上完成一個業務,這個時候系統的框架提供了三種能力給應用程式。第一個跨裝置元件啟動,有了這個能力就可以完成一個併發。第二個是跨裝置資料傳遞,經由一個連線通道進行業務的協作。第三個是分散式共享物件能夠讓你能夠自動的在兩個裝置或多個裝置之間進行狀態的自動同步。

右上角的程式碼片段強調的是一個連線,其實在系統層面提供一個連線看似是很自然的事情,但背後及其複雜,HarmonyOS上的裝置跨越了從小到中到大的各種型別的裝置,它們的晶片的型別不一樣、它們的連線方式也是不一樣的,可能有WI-FI、可能有藍芽等等,這樣的連線是無線的,經常有干擾,這種連線還要把底下的網路抖動給過濾掉。

在多端協同框架的基礎上,開發者能夠開發出跨越多個裝置的應用。舉例子:你可以在pad上開發一個觀看影片的應用,這樣藉助手機可以對影片進行文字評論和回覆,進行一個業務的跨端,這樣就可以達到併發、協作、互補。

HarmonyOS分散式操作:跨端遷移

HarmonyOS分散式應用框架深入解讀

HarmonyOS上任務管理中心可以在一個端上管理所有超級終端上的任務,藉助這個任務管理中心,可以輕鬆的把一個任務從手機端遷移到大屏上,這個過程就是開發者跟系統的一個對接。系統本身透過任務管理中心、透過應用拿到一個狀態,應用本身透過回撥把狀態傳遞給系統,系統間傳遞這個狀態,開發者就不用關心了,藉助遷移框架給使用者打造一個連續性、一致性的效果。

HarmonyOS基本架構:分散式視窗管理

HarmonyOS分散式應用框架深入解讀

不管是多端協同還是跨端遷移,當用戶在任務中心拖動時,系統會將拖動的任務視窗牽引到一個虛擬的視窗中渲染,將渲染結果傳遞給目標的代理視窗填充進去,不僅僅是把影片流的一個傳輸過去,還有使用者的互動事件發回給原始的應用,既有系統多模統一的互動模組,對應用來說是其實感知不到的,不知道事件來自本端還是另一端。

HarmonyOS基本架構:分散式硬體

HarmonyOS分散式應用框架深入解讀

現在的裝置包含的硬體、外設非常多,比如相機、麥克風,包括各種各樣的感測器,像手錶裡每天監測睡眠、每天的步行等健康的一個狀態,如果這些裝置僅侷限在一個裝置上使用那就是一個極大的限制。所以在分散式環境的程式設計中,系統從硬體的角度提供了兩個能力,第一個是全域性的虛擬化,將所有連線到超級終端上的硬體外設全域性的池化,這樣能提供給開發者跨端呼叫,不用自己建立連線,不用自己管理硬體使用權的交換,也不用二次授權,這是因為硬體很多時候是跟隱私相關的,系統已經透過統一的全域性虛擬化將這些底層能力打通了。

然後是第二是硬體自動跟隨,我們的軟體是不侷限在一個裝置上的,可能是從一個裝置遷移到另一個裝置,比如這個時候在播放聲音,比如這個時候在跟別人影片聊天,那麼這些硬體跟隨著自動遷移過去,這一點系統在應用框架以及底層的分散式硬體的一個結合完成了這麼一個事情,減少開發者的負擔。

——————

原創:老王丨【公眾號:鴻蒙開發者老王】華為認證講師 / 騰訊認證講師 / 鴻蒙開發先行者