作者:yijian,終端OS分布式文件系統(tǒng)專家;gongashi,終端OS分布式數(shù)據(jù)管理專家
HarmonyOS作為分布式操作系統(tǒng),其分布式數(shù)據(jù)管理能力非常重要。我們也一直圍繞持續(xù)為開發(fā)者帶來全局“一份”數(shù)據(jù)的開發(fā)體驗的目標,在不斷增強和提升HarmonyOS的分布式數(shù)據(jù)管理能力。本期我們就來為大家詳細介紹分布式數(shù)據(jù)管理的新能力。
一、分布式數(shù)據(jù)管理平臺面臨的挑戰(zhàn)
我們先來看一個典型的分布式場景:
手機和智慧屏協(xié)同進行文檔演示,手機上的文檔演示狀態(tài)(比如翻頁、頁面放大、頁面縮小和涂鴉等)需要同步到智慧屏,同樣智慧屏上的文檔演示狀態(tài)也需要同步到手機上。
![](https://file.elecfans.com/web2/M00/2C/C6/poYBAGHej8GAD33ZAADZDmN8k5I142.png)
圖1 分布式文檔演示場景
要實現(xiàn)以上場景,開發(fā)者面臨以下兩個挑戰(zhàn):
挑戰(zhàn)1:如何更便捷地實現(xiàn)數(shù)據(jù)的“多端協(xié)同”?
手機上的文檔演示狀態(tài)同步到智慧屏上,智慧屏上的文檔演示狀態(tài)也同步到手機上,這其實就是數(shù)據(jù)的“多端協(xié)同”。要實現(xiàn)數(shù)據(jù)的“多端協(xié)同”,需要開發(fā)者完成消息處理邏輯,包括:建立通信鏈接、消息收發(fā)處理、錯誤處理和性能調(diào)優(yōu)等,工作量非常大。此外,設(shè)備越多,調(diào)試復雜度將呈指數(shù)增長。
挑戰(zhàn)2:如何更高效地實現(xiàn)數(shù)據(jù)的“跨端遷移”?
手機和智慧屏協(xié)同進行文檔演示時,手機上的文檔要發(fā)送到智慧屏上操作,這就涉及到數(shù)據(jù)的“跨端遷移”。以往通常的做法是建立兩個設(shè)備的通信連接,手機發(fā)送文檔給智慧屏,智慧屏接收后打開和修改文檔,再將文檔發(fā)回給手機。這種實現(xiàn)方式很復雜,而且文件來回傳輸也非常影響用戶的操作效率。
二、分布式數(shù)據(jù)管理平臺
面對上面兩個挑戰(zhàn),HarmonyOS的解決辦法是:在分布式數(shù)據(jù)管理平臺提供全局訪問框架和分享框架,來支撐開發(fā)者在訪問、遷移、協(xié)同、分享等分布式場景下的業(yè)務(wù)創(chuàng)新。
![](https://file.elecfans.com/web2/M00/2C/C6/poYBAGHej8KAOGWIAACbBtGDUhc521.png)
圖2 分布式數(shù)據(jù)管理平臺
圖2中,全局訪問框架和分享框架中的數(shù)據(jù)庫,在HarmonyOS 2就已經(jīng)發(fā)布了,我們也在往期推文中介紹過,本期不再贅述。全局訪問框架和分享框架中標黃的“變量”和“文件”是即將在HarmonyOS新版本中發(fā)布的內(nèi)容,接下來為大家詳細介紹。
三、變量的全局訪問
對于挑戰(zhàn)1,為了更便捷地實現(xiàn)數(shù)據(jù)的“多端協(xié)同”,HarmonyOS提供了變量的全局訪問框架。
上面分布式文檔演示場景中,文檔演示狀態(tài)(比如翻頁、頁面放大、頁面縮小和涂鴉等)其實就是變量。如果這些變量支持“全局”訪問,那么開發(fā)者跨設(shè)備訪問這些變量就能像操作本地變量一樣,數(shù)據(jù)就能夠自動高效、便捷地多端同步了。為了實現(xiàn)變量的“全局”訪問,HarmonyOS提出了“分布式數(shù)據(jù)對象”的概念,將變量封裝成分布式數(shù)據(jù)對象。
1.“分布式數(shù)據(jù)對象”的設(shè)計理念
分布式數(shù)據(jù)對象的設(shè)計理念如圖3所示?;诜植际杰浛偩€能力和分布式內(nèi)存數(shù)據(jù)庫的跨設(shè)備同步能力,HarmonyOS構(gòu)建了基于JS對象(也就是分布式數(shù)據(jù)對象)的接口。開發(fā)者直接使用此接口就可以實現(xiàn)跨設(shè)備的數(shù)據(jù)同步,無需關(guān)注底層通信過程,可以更關(guān)注于業(yè)務(wù)邏輯的開發(fā)。
![](https://file.elecfans.com/web2/M00/2C/C6/poYBAGHej8KARS9ZAABOjI3vivw294.png)
圖3 “分布式數(shù)據(jù)對象”設(shè)計理念
2.三步使用“分布式數(shù)據(jù)對象”
“分布式數(shù)據(jù)對象”接口極為簡單、易用,只需要3個步驟:
(1)定義JS對象的時候繼承DistributedDataObject基類
(2)設(shè)置objectiD、sessionID
(3)訂閱分布式數(shù)據(jù)對象的變化(可選)
此外,其他與本地對象操作完全一致。
“分布式數(shù)據(jù)對象”接口的基類、方法和參數(shù)說明如下:
![](https://file.elecfans.com/web2/M00/2C/C6/poYBAGHej8OAWJanAAEMjjKq1DI498.png)
圖4 “分布式數(shù)據(jù)對象”接口說明
下面我們來看看“分布式數(shù)據(jù)對象”接口使用的示例代碼。圖5是多端協(xié)同發(fā)起方的示例代碼,圖6是多端協(xié)同接收方的示例代碼。
![](https://file.elecfans.com/web2/M00/2C/C6/poYBAGHej8SAV4DCAAE75BEYWcU920.png)
圖5 多端協(xié)同發(fā)起方的示例代碼
![](https://file.elecfans.com//web2/M00/2C/C4/poYBAGHeixyARWMeAAIwH_x6Qzw438.png)
圖6 多端協(xié)同接收方的示例代碼
四、文件的全局訪問和分享
對于挑戰(zhàn)2,為了更高效地實現(xiàn)數(shù)據(jù)的“跨端遷移”,HarmonyOS提供了文件的全局訪問框架和分享框架。(為了方便理解,圖7僅展示了分布式數(shù)據(jù)管理平臺中的文件部分。)
![](https://file.elecfans.com/web2/M00/2C/C6/poYBAGHej8SAe-VUAACW7GwqOjU393.png)
圖7 分布式數(shù)據(jù)管理平臺(文件部分)
如圖7所示,文件訪問框架分為應(yīng)用文件訪問框架和公共文件訪問框架。
HarmonyOS 2已經(jīng)提供應(yīng)用文件訪問框架,HarmonyOS即將發(fā)布的新版本中會新增公共文件訪問框架和文件共享框架,增強文件的全局訪問和分享能力,從而實現(xiàn)屏蔽物理存儲位置,達到讓應(yīng)用可以像訪問本地文件一樣訪問遠端文件的目標。
基于新增的公共文件訪問框架和文件共享框架,我們來看看如何實現(xiàn)兩個典型的文件使用場景:
1.直接打開遠端文件
場景說明:直接在設(shè)備A上打開設(shè)備B上的公共文件。
實現(xiàn)說明:開發(fā)者將分布式文件系統(tǒng)接入文件選擇器(File Picker),應(yīng)用就可以通過分布式的File Picker直接打開、編輯遠端文件,不需要進行跨設(shè)備的文件發(fā)送。
實現(xiàn)代碼示例如下:
-
var parameter = {
-
“want”: {
-
“action”: “action.com.huawei.filecenter.PICKER_ACITON”
-
},
-
};
-
featureAbility.startAbilityForResult(parameter, (err, data) => {
-
………// 可直接打開、編輯遠端文件
- })
復制代碼
實現(xiàn)效果如圖8所示,用戶在本機上可以選擇遠端設(shè)備,可以看到遠端設(shè)備上的文件列表,并且能直接打開和編輯遠端文件。
![](https://file.elecfans.com/web2/M00/2C/C6/poYBAGHej8WAELs_AACmlpZCOr0209.png)
圖8 直接打開遠端文件
2.文件的“跨端遷移”
場景說明:設(shè)備A分享一個公共文件給設(shè)備B,在設(shè)備B上打開該文件。
實現(xiàn)說明:此場景下,設(shè)備A并沒有將文件真的發(fā)送給設(shè)備B,而是在設(shè)備A和設(shè)備B之間建立了文件的映射關(guān)系,設(shè)備B通過此映射關(guān)系遠程訪問設(shè)備A上的文件。具體實現(xiàn)流程如圖9所示。
![](https://file.elecfans.com//web2/M00/2C/CA/pYYBAGHeix-APJCqAABLxraYXas602.png)
圖9 文件的“跨端遷移”
實現(xiàn)步驟和示例代碼如下:
(1)設(shè)備A分享文件句柄給設(shè)備B。
- handoffHelper.creator(networkID, fd);
復制代碼
(2)設(shè)備A和設(shè)備B建立文件的映射關(guān)系。
(3)設(shè)備B收到文件分享消息后,響應(yīng)消息并獲取文件的URI。
- let helper1 = DataAbilityHelper.creator(getContext());
復制代碼
(4)設(shè)備B上的應(yīng)用通過URI打開遠端文件。
-
helper1.openFile(Uri, "rw",function(fd) {
-
…………
- })
復制代碼
五、結(jié)束語
分布式數(shù)據(jù)管理平臺新增變量和文件的全局訪問框架,以及文件分享框架,幫助開發(fā)者更便捷地實現(xiàn)數(shù)據(jù)的“多端協(xié)同”,更高效地實現(xiàn)數(shù)據(jù)的“跨端遷移”。這些新能力將在HarmonyOS的新版本中體現(xiàn),敬請期待!
HarmonyOS正在不斷成長,期待更多的開發(fā)者加入我們,一起見證HarmonyOS的成長!
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7168瀏覽量
89692 -
開發(fā)者
+關(guān)注
關(guān)注
1文章
590瀏覽量
17102 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2395瀏覽量
43091 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1983瀏覽量
30630
發(fā)布評論請先 登錄
相關(guān)推薦
自動化測量軟件,讓直徑測量更便捷
DigiPCBA(便捷高效硬件項目協(xié)同設(shè)計工具)上手視頻演示
HDC2021技術(shù)分論壇:跨端分布式計算技術(shù)初探
HDC2021技術(shù)分論壇:跨端分布式計算技術(shù)初探
新能力讓數(shù)據(jù)多端協(xié)同更便捷,數(shù)據(jù)跨端遷移更高效!
通過HarmonyOS分布式能力實現(xiàn)任務(wù)的跨設(shè)備遷移設(shè)計資料分享
DevEco Studio新特性分享-跨語言調(diào)試,讓調(diào)試更便捷高效
ArkUI新能力,助力應(yīng)用開發(fā)更便捷
OpenHarmony應(yīng)用模型的構(gòu)成要素與Stage優(yōu)勢
2021年OPPO開發(fā)者大會 Color OS提供統(tǒng)一跨端協(xié)同能力
![2021年OPPO開發(fā)者大會 Color OS提供統(tǒng)一<b class='flag-5'>跨</b><b class='flag-5'>端</b><b class='flag-5'>協(xié)同</b><b class='flag-5'>能力</b>](https://file.elecfans.com/web2/M00/1A/0B/pYYBAGF48QiATrl1AAeBitnXRFI446.png)
HarmonyOS中如何進行跨端遷移
DevEco Studio新特性分享-跨語言調(diào)試,讓調(diào)試更便捷高效
工業(yè)樹莓派遠程I/O控制套裝—更高效、更靈活、更便捷
訊維融合通信系統(tǒng):讓溝通更智能、更便捷、更高效
鴻蒙開發(fā):應(yīng)用組件跨設(shè)備交互(流轉(zhuǎn))【多端協(xié)同】
![鴻蒙開發(fā):應(yīng)用組件<b class='flag-5'>跨</b>設(shè)備交互(流轉(zhuǎn))【<b class='flag-5'>多端</b><b class='flag-5'>協(xié)同</b>】](https://file1.elecfans.com/web2/M00/EE/24/wKgaomZqXDiAPQDPAAChu_Rja3E098.png)
評論