作者:yijian,終端OS分布式檔案系統專家;gongashi,終端OS分布式資料管理專家
HarmonyOS作為分布式作業系統,其分布式資料管理能力非常重要,我們也一直圍繞持續為開發者帶來全域“一份”資料的開發體驗的目標,在不斷增強和提升HarmonyOS的分布式資料管理能力,本期我們就來為大家詳細介紹分布式資料管理的新能力,
一、分布式資料管理平臺面臨的挑戰
我們先來看一個典型的分布式場景:
手機和智慧屏協同進行檔案演示,手機上的檔案演示狀態(比如翻頁、頁面放大、頁面縮小和涂鴉等)需要同步到智慧屏,同樣智慧屏上的檔案演示狀態也需要同步到手機上,

圖1 分布式檔案演示場景
要實作以上場景,開發者面臨以下兩個挑戰:
挑戰1:如何更便捷地實作資料的“多端協同”?
手機上的檔案演示狀態同步到智慧屏上,智慧屏上的檔案演示狀態也同步到手機上,這其實就是資料的“多端協同”,要實作資料的“多端協同”,需要開發者完成訊息處理邏輯,包括:建立通信鏈接、訊息收發處理、錯誤處理和性能調優等,作業量非常大,此外,設備越多,除錯復雜度將呈指數增長,
挑戰2:如何更高效地實作資料的“跨端遷移”?
手機和智慧屏協同進行檔案演示時,手機上的檔案要發送到智慧屏上操作,這就涉及到資料的“跨端遷移”,以往通常的做法是建立兩個設備的通信連接,手機發送檔案給智慧屏,智慧屏接收后打開和修改檔案,再將檔案發回給手機,這種實作方式很復雜,而且檔案來回傳輸也非常影響用戶的操作效率,
二、分布式資料管理平臺
面對上面兩個挑戰,HarmonyOS的解決辦法是:在分布式資料管理平臺提供全域訪問框架和分享框架,來支撐開發者在訪問、遷移、協同、分享等分布式場景下的業務創新,

圖2 分布式資料管理平臺
圖2中,全域訪問框架和分享框架中的資料庫,在HarmonyOS 2就已經發布了,我們也在往期推文中介紹過,本期不再贅述,全域訪問框架和分享框架中標黃的“變數”和“檔案”是即將在HarmonyOS新版本中發布的內容,接下來為大家詳細介紹,
三、變數的全域訪問
對于挑戰1,為了更便捷地實作資料的“多端協同”,HarmonyOS提供了變數的全域訪問框架,
上面分布式檔案演示場景中,檔案演示狀態(比如翻頁、頁面放大、頁面縮小和涂鴉等)其實就是變數,如果這些變數支持“全域”訪問,那么開發者跨設備訪問這些變數就能像操作本地變數一樣,資料就能夠自動高效、便捷地多端同步了,為了實作變數的“全域”訪問,HarmonyOS提出了“分布式資料物件”的概念,將變數封裝成分布式資料物件,
1. “分布式資料物件”的設計理念
分布式資料物件的設計理念如圖3所示,基于分布式軟總線能力和分布式記憶體資料庫的跨設備同步能力,HarmonyOS構建了基于JS物件(也就是分布式資料物件)的介面,開發者直接使用此介面就可以實作跨設備的資料同步,無需關注底層通信程序,可以更關注于業務邏輯的開發,

圖3 “分布式資料物件”設計理念
2. 三步使用“分布式資料物件”
“分布式資料物件”介面極為簡單、易用,只需要3個步驟:
(1)定義JS物件的時候繼承DistributedDataObject基類
(2)設定objectID、sessionID
(3)訂閱分布式資料物件的變化(可選)
此外,其他與本地物件操作完全一致,
“分布式資料物件”介面的基類、方法和引數說明如下:

圖4 “分布式資料物件”介面說明
下面我們來看看“分布式資料物件”介面使用的示例代碼,圖5是多端協同發起方的示例代碼,圖6是多端協同接收方的示例代碼,

圖5 多端協同發起方的示例代碼

圖6 多端協同接收方的示例代碼
四、檔案的全域訪問和分享
對于挑戰2,為了更高效地實作資料的“跨端遷移”,HarmonyOS提供了檔案的全域訪問框架和分享框架,(為了方便理解,圖7僅展示了分布式資料管理平臺中的檔案部分,)

圖7 分布式資料管理平臺(檔案部分)
如圖7所示,檔案訪問框架分為應用檔案訪問框架和公共檔案訪問框架,
HarmonyOS 2已經提供應用檔案訪問框架,HarmonyOS即將發布的新版本中會新增公共檔案訪問框架和檔案共享框架,增強檔案的全域訪問和分享能力,從而實作屏蔽物理存盤位置,達到讓應用可以像訪問本地檔案一樣訪問遠端檔案的目標,
基于新增的公共檔案訪問框架和檔案共享框架,我們來看看如何實作兩個典型的檔案使用場景:
1. 直接打開遠端檔案
場景說明:直接在設備A上打開設備B上的公共檔案,
實作說明:開發者將分布式檔案系統接入檔案選擇器(File Picker),應用就可以通過分布式的File Picker直接打開、編輯遠端檔案,不需要進行跨設備的檔案發送,
實作代碼示例如下:
var parameter = {
“want”: {
“action”: “action.com.huawei.filecenter.PICKER_ACITON”
},
};
featureAbility.startAbilityForResult(parameter, (err, data) => {
………// 可直接打開、編輯遠端檔案
})
實作效果如圖8所示,用戶在本機上可以選擇遠端設備,可以看到遠端設備上的檔案串列,并且能直接打開和編輯遠端檔案,

圖8 直接打開遠端檔案
2. 檔案的“跨端遷移”
場景說明:設備A分享一個公共檔案給設備B,在設備B上打開該檔案,
實作說明:此場景下,設備A并沒有將檔案真的發送給設備B,而是在設備A和設備B之間建立了檔案的映射關系,設備B通過此映射關系遠程訪問設備A上的檔案,具體實作流程如圖9所示,

圖9 檔案的“跨端遷移”
實作步驟和示例代碼如下:
(1)設備A分享檔案句柄給設備B,
handoffHelper.creator(networkID, fd);
(2)設備A和設備B建立檔案的映射關系,
(3)設備B收到檔案分享訊息后,回應訊息并獲取檔案的URI,
let helper1 = DataAbilityHelper.creator(getContext());
(4)設備B上的應用通過URI打開遠端檔案,
helper1.openFile(Uri, "rw", function(fd) {
…………
})
五、結束語
分布式資料管理平臺新增變數和檔案的全域訪問框架,以及檔案分享框架,幫助開發者更便捷地實作資料的“多端協同”,更高效地實作資料的“跨端遷移”,這些新能力將在HarmonyOS的新版本中體現,敬請期待!
HarmonyOS正在不斷成長,期待更多的開發者加入我們,一起見證HarmonyOS的成長!

掃碼添加開發者小助手微信
獲取更多HarmonyOS開發資源和開發者活動資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/413218.html
標籤:其他
