背景
隨著越來越多設備的智能化,在多設備場景下應用開發面臨以下挑戰:從多設備的形態差異(不同大小、不同分辨率、不同形狀的屏幕,多樣化的交互方式–按鈕、觸屏、鍵盤、語音、手勢等),多設備的能力差異(內存從百 KB級到GB級設備)。
針對上述挑戰,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分布式應用程序框架整體架構

從應用框架的角度對系統的分層,共分5層,分別如下:
底層軟件層
包括內核和HAL、軟總線,這一層開發者不會用著,一般默默地為開發者和用戶服務。
基礎服務層
包括分布式調度管理、分布式數據管理、分布式硬件管理、分布式權限管理。
核心服務層
包括全局包管理、分布式運行管理,全局包管理:HarmonyOS上的應用不再局限于單臺設備上,包管理還包括跨虛擬終端上的所有設備。分布式運行管理負責應用動態運行時管理,包括協同框架、遷移框架、服務卡片框架。
應用接口層
是系統提供給廣大開發人員開發應用的接口層,不管系統底層實現有多復雜,但提供給開發者的接口盡可能的簡單。這層包括之前提到的基本組件,還有ACE(Ability Cross-platform Environment)框架,在多設備的交互模型下,一致性很重要,從UI的角度怎么讓UI框架適應大屏、小屏、長屏、方屏、橫屏等,這個一致性很大程度是由ACE框架支撐的。
用戶程序層
這層就是廣大開發者開發的應用供用戶使用。
三、HarmonyOS分布式應用程序框架運行視圖

這是應用框架運行時的視圖,運行時每個應用在獨立的沙箱里面,彼此隔離互不影響,這樣保證了系統的安全性。系統里面包含像AppSpawn負責進程的孵化,AppMS負責進程的管理,BMS(Bundle Manager Service)負責包的管理,AMS(Ability Manager Service)負責基本的組件管理,DMS(Distributed Manager Service)負責分布式業務的,是專門的一個底層的服務,我們好多上層的服務都有分布式的業務,經由它進行一個連接的業務的歸一,它的主要職責包括像分布式任務管理、跨設備狀態和數據同步。
四、HarmonyOS分布式操作:多端協同

多端協同是為了讓我們的應用程序在多個端上完成一個業務,這個時候系統的框架提供了三種能力給應用程序。第一個跨設備組件啟動,有了這個能力就可以完成一個并發。第二個是跨設備數據傳遞,經由一個連接通道進行業務的協作。第三個是分布式共享對象能夠讓你能夠自動的在兩個設備或多個設備之間進行狀態的自動同步。
右上角的代碼片段強調的是一個連接,其實在系統層面提供一個連接看似是很自然的事情,但背后及其復雜,HarmonyOS上的設備跨越了從小到中到大的各種類型的設備,它們的芯片的類型不一樣、它們的連接方式也是不一樣的,可能有WI-FI、可能有藍牙等等,這樣的連接是無線的,經常有干擾,這種連接還要把底下的網絡抖動給過濾掉。
在多端協同框架的基礎上,開發者能夠開發出跨越多個設備的應用。舉例子:你可以在pad上開發一個觀看視頻的應用,這樣借助手機可以對視頻進行文字評論和回復,進行一個業務的跨端,這樣就可以達到并發、協作、互補。
五、HarmonyOS分布式操作:跨端遷移

HarmonyOS上任務管理中心可以在一個端上管理所有超級終端上的任務,借助這個任務管理中心,可以輕松的把一個任務從手機端遷移到大屏上,這個過程就是開發者跟系統的一個對接。系統本身通過任務管理中心、通過應用拿到一個狀態,應用本身通過回調把狀態傳遞給系統,系統間傳遞這個狀態,開發者就不用關心了,借助遷移框架給用戶打造一個連續性、一致性的效果。
六、HarmonyOS基本架構:分布式窗口管理

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

現在的設備包含的硬件、外設非常多,比如相機、麥克風,包括各種各樣的傳感器,像手表里每天監測睡眠、每天的步行等健康的一個狀態,如果這些設備僅局限在一個設備上使用那就是一個極大的限制。所以在分布式環境的編程中,系統從硬件的角度提供了兩個能力,第一個是全局的虛擬化,將所有連接到超級終端上的硬件外設全局的池化,這樣能提供給開發者跨端調用,不用自己建立連接,不用自己管理硬件使用權的交換,也不用二次授權,這是因為硬件很多時候是跟隱私相關的,系統已經通過統一的全局虛擬化將這些底層能力打通了。
然后是第二是硬件自動跟隨,我們的軟件是不局限在一個設備上的,可能是從一個設備遷移到另一個設備,比如這個時候在播放聲音,比如這個時候在跟別人視頻聊天,那么這些硬件跟隨著自動遷移過去,這一點系統在應用框架以及底層的分布式硬件的一個結合完成了這么一個事情,減少開發者的負擔。
原文鏈接:https://harmonyos.51cto.com