<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    8

    瀏覽量

    8904
  • 鴻蒙
    +關注

    關注

    55

    文章

    1769

    瀏覽量

    42153
  • HarmonyOS
    +關注

    關注

    79

    文章

    1878

    瀏覽量

    29335
  • OpenHarmony
    +關注

    關注

    23

    文章

    3380

    瀏覽量

    15194
收藏 人收藏

    評論

    相關推薦

    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分布式——跨設備遷移

    HarmonyOS分布式——跨設備遷移
    發表于 06-26 14:34

    【木棉花】分布式數據

    是這樣的:“通過結合帳號、應用和數據庫三元組,分布式數據服務對屬于不同的應用的數據進行隔離,保證不同應用之間的數據不能通過
    發表于 09-05 10:43

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

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

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

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

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

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

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

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

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

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

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

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

    HarmonyOS應用開發-EducationSystem分布式親子早教系統體驗

    HarmonyOS應用程序開發,多屏協作交互和分布式跨設備傳輸的經驗。 ? 從項目創建、代碼編寫到編譯、構造、部署和操作。二、效果圖:完整代碼地址:https://gitee.com/jltfcloudcn/jump_to/tr
    發表于 07-25 10:23

    HarmonyOS應用開發-分布式語音攝像頭體驗

    一、組件說明使用HarmonyOS分布式文件系統和AI語音識別功能開發了一個分布式語音攝像頭。使用此相機應用程序,同一分布式網絡下的不同設備
    發表于 08-24 15:06

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

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

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

    ?? 之前給大家介紹過《HarmonyOS 分布式之仿抖音應用》,此次給大家介紹一下基于鴻蒙分布式數據服務開發的聊天室應用,模擬現實中的聊天
    的頭像 發表于 12-03 10:35 ?7353次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>