一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

HarmonyOS開發(fā)實例:【分布式數(shù)據(jù)服務】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-18 10:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

介紹

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

圖 1 []()

搭建OpenHarmony環(huán)境

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

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

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

代碼結構解讀

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

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

分布式組網(wǎng)

  1. 硬件準備:準備兩臺燒錄相同的版本系統(tǒng)的Hi3516DV300開發(fā)板A,B。

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

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

    • 找到系統(tǒng)應用“音樂”。

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


    配網(wǎng)完畢。

創(chuàng)建分布式數(shù)據(jù)庫

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

操作分布式數(shù)據(jù)方法

創(chuàng)建分布式數(shù)據(jù)庫后,獲得一個KvStore,通過KvStore調(diào)用相關接口執(zhí)行相關的數(shù)據(jù)操作,結果以Promise形式返回。

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

同步分布式數(shù)據(jù)庫

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

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

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

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;
	  }
	});
  });
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 分布式數(shù)據(jù)

    關注

    0

    文章

    9

    瀏覽量

    9042
  • 鴻蒙
    +關注

    關注

    60

    文章

    2613

    瀏覽量

    44015
  • HarmonyOS
    +關注

    關注

    80

    文章

    2122

    瀏覽量

    32925
  • OpenHarmony
    +關注

    關注

    29

    文章

    3849

    瀏覽量

    18556
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    HarmonyOS開發(fā)實例:【分布式數(shù)據(jù)管理】

    eTS中分布式數(shù)據(jù)管理的使用,包括KVManager對象實例的創(chuàng)建和KVStore數(shù)據(jù)流轉(zhuǎn)的使用。
    的頭像 發(fā)表于 04-11 09:57 ?1338次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實例</b>:【<b class='flag-5'>分布式</b><b class='flag-5'>數(shù)據(jù)</b>管理】

    HarmonyOS Next 應用元服務開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)權限與基礎數(shù)據(jù)

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

    HarmonyOS應用開發(fā)-分布式任務調(diào)度

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

    HarmonyOS應用開發(fā)-分布式設計

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

    HarmonyOS分布式數(shù)據(jù)庫,為啥這么牛?

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

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

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

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

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

    HarmonyOS教程—基于分布式數(shù)據(jù)接口,實現(xiàn)多種設備上一致的數(shù)據(jù)訪問體驗

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

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

    著,一般默默地為開發(fā)者和用戶服務?;A服務層:包括分布式調(diào)度管理、分布式數(shù)據(jù)管理、
    發(fā)表于 11-22 15:15

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

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

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

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

    HarmonyOS測試技術與實戰(zhàn)-HarmonyOS分布式應用特征與挑戰(zhàn)

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

    基于鴻蒙分布式數(shù)據(jù)服務開發(fā)的聊天室應用

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

    基于鴻蒙分布式數(shù)據(jù)服務開發(fā)的聊天室應用

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

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

    HarmonyOS是新一代的智能終端操作系統(tǒng),給開發(fā)者提供了設備發(fā)現(xiàn)、設備連接、跨設備調(diào)用等豐富的分布式API。隨著越來越多的開發(fā)者投入到Harmo
    的頭像 發(fā)表于 12-24 17:56 ?2246次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>分布式</b>應用上架問題分析