吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS開發實例:【分布式數據服務】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-18 10:18 ? 次閱讀

介紹

分布式數據服務(Distributed Data Service,DDS)為應用程序提供不同設備間數據分布式的能力。通過調用分布式數據接口,應用程序將數據保存到分布式數據庫中。通過結合帳號、應用和分布式數據服務對屬于不同的應用的數據進行隔離,保證不同應用之間的數據不能通過分布式數據服務互相訪問。在通過可信認證的設備間,分布式數據服務支持應用數據相互同步,為用戶提供在多種終端設備上一致的數據訪問體驗。效果圖如下:

圖 1 []()

搭建OpenHarmony環境

完成本篇Codelab我們首先要完成開發環境的搭建,本示例以Hi3516DV300開發板為例,參照以下步驟進行:

  1. [獲取OpenHarmony系統版本]:標準系統解決方案(二進制)
    以3.0版本為例:
  2. 搭建燒錄環境
    1. [完成DevEco Device Tool的安裝]
    2. [完成Hi3516開發板的燒錄]
    3. 鴻蒙開發指導參考:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md](
  3. 搭建開發環境
    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發環境配置。
    2. 開發環境配置完成后,請參考[使用工程向導]創建工程(模板選擇“Empty Ability”),選擇JS或者eTS語言開發。
    3. 工程創建完成后,選擇使用[真機進行調測]。

搜狗高速瀏覽器截圖20240326151450.png

代碼結構解讀

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在最后的參考中提供下載方式,接下來我們來講解整個工程的代碼結構:

  • pages:用于存放所有頁面的目錄。
    • index:構成關系型數據庫操作界面,包括index.hml布局文件,index.css樣式文件,index.js邏輯處理文件。
    • KvStoreModel.js:創建分布式數據庫,以及提供表格數據的增、刪、改、查API接口。
  • config.json:配置文件。

分布式組網

  1. 硬件準備:準備兩臺燒錄相同的版本系統的Hi3516DV300開發板A,B。

  2. 兩個開發板A,B配置在同一個WiFi網絡之下。
    打開設置-->WLAN-->點擊右側WiFi開關-->點擊目標WiFi并輸入密碼。

  3. 將設備A,B設置為互相信任的設備。

    • 找到系統應用“音樂”。

    • 設備A打開音樂,點擊左下角流轉按鈕,彈出列表框,在列表中會展示遠端設備的id。
    • 選擇遠端設備B的id,另一臺開發板(設備B)會彈出驗證的選項框。
    • 設備B點擊允許,設備B將會彈出隨機PIN碼,將設備B的PIN碼輸入到設備A的PIN碼填入框中。


    配網完畢。

創建分布式數據庫

  1. 導入模塊
    import distributedData from '@ohos.data.distributeddata';
    
  2. 參考分布式數據庫[接口],在kvStoreModel類中定義KvManager和KvStore變量,并通過createKVManager創建分布式數據庫管理對象KvManager,通過getKVStore獲取數據庫操作實例KvStore。其中config表示創建KVManager實例的配置信息,包括調用方的包名和用戶信息。options表示創建 KvStore實例的配置信息。表示示例代碼如下:
export default class KvStoreModel {
    kvManager;
    kvStore;
    constructor() {
    }
    createKvStore(callback) {
      if (typeof (this.kvStore) === 'undefined') {
        //創建KVManager實例的配置信息
        var config = {
          bundleName: 'com.ohos.distributedmusicplayer',
          userInfo: {
            userId: '0',
            userType: 0
          }
        };
        let self = this;
        distributedData.createKVManager(config).then((manager) = > {
          self.kvManager = manager;
          //創建 KvStore實例的配置信息
          var options = {
            createIfMissing: true,
            encrypt: false,
            backup: false,
            autoSync: true,
            kvStoreType: 1,
            schema: '',
            securityLevel: 3,
          };
          self.kvManager.getKVStore(STORE_ID, options).then((store) = > {
            self.kvStore = store;
            callback();
          });
        });
      } else {
        callback();
      }
    }
}

操作分布式數據方法

創建分布式數據庫后,獲得一個KvStore,通過KvStore調用相關接口執行相關的數據操作,結果以Promise形式返回。

  • 添加鍵值對到數據庫:使用put()方法,該方法接收兩個參數,分別是要添加的數值Key和要添加的數值。示例代碼如下:
    put(key, value) {
      this.kvStore.put(key, value).then((data) = > {
    	this.kvStore.get(key).then((data) = > {
    	});
      }).catch((err) = > {
      });
    }
    
  • 數據庫中刪除指定鍵值對的數據:使用delete()方法,該方法接收一個參數,需要刪除數據的鍵值key,結果以Promise形式返回。示例代碼如下:
    delete(key) {
      this.kvStore.delete(key).then((data) = > {
      }).catch((err) = > {
      });
    }
    
  • 數據庫中獲取指定鍵值對的數據:使用get()方法,該方法接收兩個參數,分別是需要獲取數據的鍵值key和返回函數callback,結果以callback函數形式返回。示例代碼如下:
    get(key,callback){
      this.kvStore.get(key).then((data) = > {
           callback(data);
      });
    }
    

同步分布式數據庫

通常情況下,當數據庫的數據產生變化時,需要主動通知與該數據相關聯的進程或者應用,從而使得相關進程或者應用接收到數據變化后完成相應的處理。對于數據提供方,當數據庫數據變化,可以通過如下方法通知數據訂閱者:

broadcastMessage(key, value) {
  let self = this;
  this.createKvStore(() = > {
	self.put(key, value);//self.delete(key)新增或者刪除數據都可導致數據變化
  });
}

對于數據接收方,可以通過KvStore提供的[on]方法注冊一個數據訂閱者。示例代碼如下:

setOnMessageReceivedListener(callback) {
  let self = this;
  this.createKvStore(() = > {
	self.kvStore.on('dataChange', 1, (data) = > {
	  for (var i = 0; i < data.insertEntries.length; i++) {
		callback(data.insertEntries[0].key, data.insertEntries[0].value.value, 0);
		return;
	  }
	  for (i = 0; i < data.updateEntries.length; i++) {
		callback(data.updateEntries[0].key, data.updateEntries[0].value.value, 1);
		return;
	  }
	  for (i = 0; i < data.deleteEntries.length; i++) {
		callback(data.deleteEntries[0].key, '', 2);
		return;
	  }
	});
  });
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分布式數據
    +關注

    關注

    0

    文章

    9

    瀏覽量

    8947
  • 鴻蒙
    +關注

    關注

    57

    文章

    2392

    瀏覽量

    43050
  • HarmonyOS
    +關注

    關注

    79

    文章

    1982

    瀏覽量

    30574
  • OpenHarmony
    +關注

    關注

    25

    文章

    3744

    瀏覽量

    16577
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發實例:【分布式數據管理】

    eTS中分布式數據管理的使用,包括KVManager對象實例的創建和KVStore數據流轉的使用。
    的頭像 發表于 04-11 09:57 ?982次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發</b><b class='flag-5'>實例</b>:【<b class='flag-5'>分布式</b><b class='flag-5'>數據</b>管理】

    HarmonyOS Next 應用元服務開發-分布式數據對象遷移數據權限與基礎數據

    設備文件訪問實現文件的遷移,難以獲取文件同步完成的時間。為了保證更高的成功率,文件的遷移不建議繼續通過該方式實現,推薦使用分布式數據對象攜帶資產的方式。開發者此前通過跨設備文件訪問實現的文件遷移依然生效
    發表于 12-24 09:40

    HarmonyOS應用開發-分布式任務調度

    1. 介紹本篇CodeLab將實現的內容HarmonyOS是面向全場景多終端的分布式操作系統,使得應用程序的開發打破了智能終端互通的性能和數據壁壘,業務邏輯原子化
    發表于 09-18 09:21

    HarmonyOS應用開發-分布式設計

    設計理念HarmonyOS 是面向未來全場景智慧生活方式的分布式操作系統。對消費者而言,HarmonyOS 將生活場景中的各類終端進行能力整合,形成“One Super Device”,以實現
    發表于 09-22 17:11

    HarmonyOS分布式數據庫,為啥這么牛?

    開發者無需關注索引引擎實現;業務通過一套接口調用,就可以建立起應用內的索引,同時系統還具備強大的搜索服務,提供了豐富的檢索接口。 03 出色的性能表現 除了實現基礎功能,HarmonyOS
    發表于 11-19 15:38

    HarmonyOS教程—分布式運動健康應用(智能穿戴端)

    的健康數據,并寫入到分布式數據庫中,我們會在第七小節詳細說明如何實現。最后是初始化分布式數據服務initDbManager(),有關分布式數據
    發表于 09-06 11:39

    HarmonyOS原子化服務卡片開發-分布式體驗學習

    1.原子化服務流轉在HarmonyOS中泛指涉及多端的分布式操作。流轉能力打破設備界限,多設備聯動,使用戶應用程序可分可合、可流轉,實現如郵件跨設備編輯、多設備協同健身、多屏游戲等分布式
    發表于 09-07 09:38

    HarmonyOS教程—基于分布式數據接口,實現多種設備上一致的數據訪問體驗

    1. 如何使用分布式數據庫介紹分布式數據服務(Distributed Data Service,DDS) 為應用程序提供不同設備間數據數據
    發表于 09-26 11:40

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

    著,一般默默地為開發者和用戶服務。基礎服務層:包括分布式調度管理、分布式數據管理、
    發表于 11-22 15:15

    HDC2021技術分論壇:如何高效完成HarmonyOS分布式應用測試?

    作者:liuxun,HarmonyOS測試架構師HarmonyOS是新一代的智能終端操作系統,給開發者提供了設備發現、設備連接、跨設備調用等豐富的分布式API。隨著越來越多的
    發表于 12-13 14:55

    如何高效完成HarmonyOS分布式應用測試?

    作者:liuxun,HarmonyOS測試架構師HarmonyOS是新一代的智能終端操作系統,給開發者提供了設備發現、設備連接、跨設備調用等豐富的分布式API。隨著越來越多的
    發表于 12-13 18:07

    HarmonyOS測試技術與實戰-HarmonyOS分布式應用特征與挑戰

     HDC 2021華為開發者大會HarmonyOS測試技術與實戰-HarmonyOS分布式應用特征與挑戰
    的頭像 發表于 10-23 14:41 ?1730次閱讀
    <b class='flag-5'>HarmonyOS</b>測試技術與實戰-<b class='flag-5'>HarmonyOS</b><b class='flag-5'>分布式</b>應用特征與挑戰

    基于鴻蒙分布式數據服務開發的聊天室應用

    ?? 之前給大家介紹過《HarmonyOS 分布式之仿抖音應用》,此次給大家介紹一下基于鴻蒙分布式數據服務開發的聊天室應用,模擬現實中的聊天
    的頭像 發表于 11-15 09:32 ?1864次閱讀

    基于鴻蒙分布式數據服務開發的聊天室應用

    ?? 之前給大家介紹過《HarmonyOS 分布式之仿抖音應用》,此次給大家介紹一下基于鴻蒙分布式數據服務開發的聊天室應用,模擬現實中的聊天
    的頭像 發表于 12-03 10:35 ?7655次閱讀

    HarmonyOS分布式應用上架問題分析

    HarmonyOS是新一代的智能終端操作系統,給開發者提供了設備發現、設備連接、跨設備調用等豐富的分布式API。隨著越來越多的開發者投入到Harmo
    的頭像 發表于 12-24 17:56 ?1957次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>分布式</b>應用上架問題分析
    百家乐扫瞄光纤洗牌机扑克洗牌机扑克洗牌机| 榆次百家乐的玩法技巧和规则| 百家乐赌博| 宝博百家乐娱乐城| 百家乐投注技巧球讯网| 游戏机百家乐作弊| 百家乐官网强弱走势图| 英皇国际娱乐| bet365备用| 时时博在线娱乐城| 五指山市| 百家乐官网的必赢方法| 百家乐官网发牌铲| 新太阳城工业区| 现场百家乐牌路分析| 皇家百家乐出租平台| 澳门百家乐才能| 百家乐视频打麻将| 百家乐浴盆博彩通排名| 百家乐娱乐网址| 大发888赢速通充值| 金字塔百家乐的玩法技巧和规则| 威尼斯人娱乐城佣金| bet365合作计划| 二八杠游戏机| 大发888官方df888gfxzylc8| 一路发娱乐城| 百家乐官网风云论坛| 在线百家乐官网合作| 百家乐官网最稳妥的打法| 利高百家乐官网游戏| ez百家乐官网技巧| 百家乐官网翻天下载| 淘宝博百家乐官网的玩法技巧和规则| 百家乐官网庄多还是闲多| 风水24山代表什么| 百家乐连锁| bet365备用主页| 澳门百家乐官网视频| 百家乐官网赌场彩| 百家乐官网过滤软件|