【HarmonyOS Next之旅】DevEco Studio使用指南(二十八) -> 開發云對象

目錄

1 -> 開發流程

2 -> 創建云對象

3 -> 開發云對象

4 -> 調試云對象

4.1 -> 前提條件

4.2 -> 通過本地調用方式調試云對象

4.3 -> 通過遠程調用方式調試云對象

5 -> 部署云對象


1 -> 開發流程

除去傳統的云函數,您還可在端云一體化云側工程下開發云對象。云對象是一種特殊的云函數,本質是對云函數的一種封裝,客戶端可通過導入一個云對象來直接使用這個對象的方法,提供在端側直接調用云側代碼的開發體驗。相對普通云函數方式,云對象代碼更精簡、邏輯更清晰,大多數場景下推薦使用云對象代替傳統云函數。開發流程大致如下:

  1. 創建云對象:您可直接在DevEco Studio創建云對象。
  2. 開發云對象:云對象創建完成后,您便可以開始編寫云對象業務代碼了。
  3. 調試云對象:您可以對云對象進行調試,以測試云對象代碼運行是否正確。
  4. 部署云對象:完成云對象代碼開發與調試后,您可將云對象部署到AGC云端,支持單個部署和批量部署。

說明

一般建議先將云對象調試無誤后再部署至云端,但某些業務場景下需要先部署云對象才能進行調試。請根據實際業務需要操作。

2 -> 創建云對象

首先您需要在云側工程下創建云對象。

1. 右擊“cloudfunctions”目錄,選擇“New > Cloud Function”。

2. 在“Select the Cloud Function Type”欄選擇“Cloud Object”,輸入云對象名稱(如“my-cloud-object”),點擊“OK”。

與云函數名一樣,云對象名稱長度2-63個字符,僅支持小寫英文字母、數字、中劃線(-),首字符必須為小寫字母,結尾不能為中劃線(-)。

“cloudfunctions”目錄下生成新建的云對象目錄,目錄下主要包含如下文件:

  • 云對象配置文件“function-config.json”:包含handler、觸發器等信息。
    • handler: 云對象的入口模塊及云對象導出的類,通過“.”連接。
    • functionType:表示函數類型,“0”表示云函數,“1”表示云對象。
    • triggers:定義了云對象使用的觸發器類型,當前云對象僅支持HTTP觸發器。

    說明

    云對象的配置文件“function-config.json”不建議手動修改,否則將導致云對象部署失敗或其它錯誤。

  • 云對象入口文件“xxx.ts”(如“myCloudObject.ts”):在此文件中編寫云對象代碼。

  • 云對象依賴配置文件“package.json”:在此文件中添加依賴。

3 -> 開發云對象

云對象創建完成后,您便可以直接在云對象中編寫需要實現的方法。例如,通過云對象實現add與subtract兩個方法。

1. 打開云對象入口文件(此處以“myCloudObject.ts”為例),添加add與subtract方法。

export class MyCloudObject {add(num1: number, num2: number) {return { result: num1 + num2 };}subtract(num1: number, num2: number) {return { result: num1 - num2 };}
}

注意

  • 云對象是無狀態性。云對象部署至云側后,每一次調用都可能是不同的后臺節點,因此在云對象上定義類成員變量是無意義的。從一個Method中對一個類成員屬性賦值,然后期望從另一個Method去獲取類成員屬性,這樣的做法是錯誤的。
  • 云對象無需編寫構造函數。云側在收到對云對象的某一個函數的請求時,會調用云對象的默認的無參構造函數。
  • 云對象方法的輸入是從JSON反序列化而來,只能是string、number或者Object,不支持Date、Uint8Array等類型。如果在編寫云對象代碼的過程中需要傳遞Date或Uint8Array,建議通過定義成number或者數組,在Method內通過顯式地調用Date或Uint8Array的構造函數來達到目的。
  • 云對象的方法的輸出當前不支持單個number返回。
  • 云對象的方法的輸入、輸出可以使用自定義對象,不能使用第三方依賴定義的對象或類型。注意,并不是云對象不能有第三方依賴,而是云對象的輸入和輸出不能有第三方依賴,否則在"Generator Invoke Interface"階段,將會因為找不到依賴而失敗,根本原因是,端側代碼運行在HarmonyOS支持方舟運行時,而云側運行在Node.js中,二者的依賴管理不同。

2. (可選)如云對象存在依賴關系,可在“package.json”文件的“dependencies”下添加需要的依賴,然后點擊右上角“Sync Now”。

說明

右擊“package.json”文件,選擇“Run 'npm install'”菜單,也可以實現依賴包安裝。

所有安裝的依賴包都會存儲在當前云對象的“node_modules”目錄下。

4 -> 調試云對象

云對象開發完成后,您可以對其進行調試,以驗證云對象代碼運行是否正常。

目前DevEco Studio云對象調試支持本地調用和遠程調用,請根據實際場景選擇使用:

  • 通過本地調用方式調試云對象:在DevEco Studio調試本地開發好的云對象。支持單個調試和批量調試,并支持Run和Debug兩種模式,調試功能豐富,常在云對象開發過程或問題定位過程中使用。
  • 通過遠程調用方式調試云對象:先將云對象部署至AGC云端,然后直接在DevEco Studio調用云端云對象。此方式主要用于測試云對象在云端的運行情況、或補充測試因各種因素限制未能在本地調用方式中發現的問題。

4.1 -> 前提條件

  • 請確保已登錄。
  • 如果工程有代碼邏輯涉及云對象調用云數據庫,需在調試前先將整個云工程部署到AGC云端,否則云端將沒有相關數據及環境變量。

4.2 -> 通過本地調用方式調試云對象

可在DevEco Studio調試本地開發好的云對象,支持單個調試和批量調試,并支持Run和Debug兩種模式。

  • 單個調試和批量調試流程相同,區別僅在于:單個調試是一次只為一個云對象啟動本地調試,之后只能調用該云對象;批量調試是一次為“cloudfunctions”目錄下所有云對象啟動本地調試、然后逐個調用各個云對象。
  • Run模式和Debug模式的區別在于:Debug模式支持使用斷點來追蹤云對象的運行情況,Run模式則不支持。

下文以Debug模式下調試單個云對象“my-cloud-object”為例,介紹如何在DevEco Studio調試本地云對象。

1. 右擊“my-cloud-object”云對象目錄,選擇“Debug 'my-cloud-object'”。

說明

  • 如需批量調試多個云對象,右擊“cloudfunctions”目錄,選擇“Debug Cloud Functions”,即可啟動該目錄下所有云對象。如“cloudfunctions”目錄下同時存在云函數和云對象,將會啟動所有的云函數和云對象。

2. 在下方通知欄“cloudfunctions”窗口,查看調試日志。如果出現“Cloud Functions loaded successfully”,表示云對象已成功加載到本地運行的HTTP Server中,并生成對應的Function URI。

3. 如需設置斷點調試,在函數代碼中選定要設置斷點的有效代碼行,在行號(如下圖行3)后單擊鼠標左鍵設置斷點(如下圖的紅點)。

設置斷點后,調試能夠在斷點處中斷,并高亮顯示該行。

4. 在菜單欄選擇“View > Tool Windows > Cloud Functions Requestor”,使用事件模擬器(Cloud Functions Requestor)觸發云對象調用。

5. 在彈出的“Cloud Functions Requestor”面板,配置觸發事件參數。

  • Cloud Function:選擇需要觸發的云對象,此處以云對象“my-cloud-object”為例。
  • Environment:選擇云對象調用環境。此處選擇“Local”,表示本地調用。
  • Method:必填項,輸入云對象的方法名稱,如“add”。
  • Event:方法參數列表,JSON array格式,依次代表Method的入參。如add方法接收兩個number類型的形參,num1與num2,那么填入“[1, 2]”表示構造num1=1,num2=2的請求。

注意?

如果Method的入參中的某一個是數組[]類型,那么Event中將至少包含兩層方括號'[',外層的方括號表示參數列表。

6. (可選)點擊“Save”,可保存當前觸發事件。

點擊右上角

可展開保存的觸發事件,后續可直接點擊“Load”加載事件。對于不需要保存的觸發事件,也可以點擊“Delete”刪除。

7. 點擊“Trigger”, 將會觸發執行云對象的方法,執行結果將展示在“Result”框內。

說明

“Result”框右側的“Logs”面板僅供???????通過遠程調用方式調試云對象時使用。

8. 點擊菜單欄

,可停止調試。

9. 根據調試結果修改云對象代碼后,點擊

重新以Debug模式啟動調試,直至沒有問題。

10. 參考步驟5~9,完成云對象其他方法或其他云對象的調試。

4.3 -> 通過遠程調用方式調試云對象

可以將云對象部署至AGC云端,然后在DevEco Studio調用云端云對象,以測試云對象在云端的運行情況、或補充測試因各種因素限制未能在本地調試中發現的問題。

1. 參考???????部署云對象將需要調試的云對象部署至AGC云端。

2. 在菜單欄選擇“View > Tool Windows > Cloud Functions Requestor”,使用事件模擬器(Cloud Functions Requestor)觸發云對象調用。

3. 在彈出的“Cloud Functions Requestor”面板,配置觸發事件參數。

  • Cloud Function:選擇需要觸發的云對象,此處依然以“my-cloud-object”為例。
  • Environment:選擇云對象調用環境。此處選擇“Remote”,表示遠程調用。
  • Method:輸入云對象的方法名稱,如“add”。
  • Event:方法參數列表,JSON array格式,按順序代表Method的入參,如add方法接收兩個number類型的形參,num1與num2,那么填入“[1, 2]”表示構造num1=1,num2=2的請求,如“[1, 2]”。

注意

如果Method的入參中的某一個是數組[]類型,那么Event中將至少包含兩層方括號,如'[[1, 2], 3]',外層的方括號表示參數列表。

4. 點擊“Trigger”, 將會觸發執行云對象方法,執行結果將展示在“Result”框內。

5. 點擊“Logs”頁簽,還可查看打印的日志定位問題。修改云對象代碼、重新部署云對象后再次執行遠程調用,直至沒有問題。

6. 參考步驟1~5,完成云對象其他方法或其他云對象的調試。

5 -> 部署云對象

完成云對象代碼開發后,您可將云對象部署到AGC云端,支持單個部署和批量部署。

單個部署僅部署選中的云對象,批量部署則會將整個“cloudfunctions”目錄下的所有云對象同時部署到AGC云端。

下文以部署單個云對象“my-cloud-object”為例,介紹如何部署云對象。

1. 右擊“my-cloud-object”云對象目錄,選擇“Deploy 'my-cloud-object'”。

說明

如需批量部署多個云對象,右擊“cloudfunctions”目錄,選擇“Deploy Cloud Functions”即可部署該目錄下所有云對象。如“cloudfunctions”目錄下同時存在云函數和云對象,云函數和云對象將會被一起部署到AGC云端。

2. 可在底部狀態欄右側查看云對象打包與部署進度。

耐心等待,直至出現“Deploy successfully”消息,表示當前云對象已成功部署。

3. 在菜單欄選擇“Tools > CloudDev”。

4. 在打開的CloudDev面板中,點擊“Serverless > Cloud Functions”下的“Go to console”,進入當前項目的云函數服務頁面。

5. 查看到“my-cloud-object”云對象已成功部署至AGC云端,云對象名稱與本地工程的云對象目錄名相同。

部署成功后,便可以從端側調用云對象了。


感謝各位大佬支持!!!

互三啦!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/diannao/85376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85376.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85376.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于51單片機的音樂盒汽車喇叭調音量proteus仿真

地址: https://pan.baidu.com/s/1l3CSSMi4uMV5-XLefnKoSg 提取碼:1234 仿真圖: 芯片/模塊的特點: AT89C52/AT89C51簡介: AT89C51 是一款常用的 8 位單片機,由 Atmel 公司(現已被 Microchip 收…

實驗設計與分析(第6版,Montgomery)第5章析因設計引導5.7節思考題5.8 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第5章析因設計引導5.7節思考題5.8 R語言解題。主要涉及方差分析&#xff0c;正態假設檢驗&#xff0c;殘差分析&#xff0c;交互作用圖。 (a) dataframe<-data.frame( Lightc(580,568…

[藍橋杯]分考場

題目描述 nn 個人參加某項特殊考試。 為了公平&#xff0c;要求任何兩個認識的人不能分在同一個考場。 求是少需要分幾個考場才能滿足條件。 輸入描述 輸入格式&#xff1a; 第一行&#xff0c;一個整數 nn (1≤n≤1001≤n≤100)&#xff0c;表示參加考試的人數。 第二行…

C++: STL簡介與string類核心技術解析及其模擬實現

目錄: 一.STL二.string類一、創建對象的6種構造方式二、常用接口解析1. 容量操作2. 元素訪問3. 修改操作4. 字符串操作 三.string模擬實現一、設計基礎&#xff1a;類結構與資源管理二、拷貝控制&#xff1a;深拷貝的三種實現1. 傳統深拷貝2. 現代寫法&#xff08;推薦&#xf…

Python進階【四】:XML和JSON文件處理

Python提供了多種處理XML和JSON文件的方式&#xff0c;讓我們來看看最常用的方法。 一、處理JSON文件 JSON在Python中處理起來非常簡單&#xff0c;因為它的結構與Python的字典(dict)和列表(list)幾乎一致。 常用模塊&#xff1a;json模塊 優點&#xff1a;Python標準庫自帶…

Golang | 搜索哨兵-對接分布式gRPC服務

哨兵&#xff08;centennial&#xff09;負責接待客人&#xff0c;直接與調用方對接。哨兵的核心組件包括service HUB和connection pool。service HUB用于與服務中心通信&#xff0c;獲取可提供服務的節點信息。connection pool用于緩存與index worker的連接&#xff0c;避免每…

CSS3實現的賬號密碼輸入框提示效果

以下是通過CSS3實現輸入框提示效果的常用方法&#xff0c;包含浮動標簽和動態提示兩種經典實現方案&#xff1a; 一、浮動標簽效果 <div class"input-group"><input type"text" required><label>用戶名</label> </div><…

maven編譯時跳過test過程

如果代碼里有無法在打包環境中測試的部分&#xff0c;則直接運行mvn clean package&#xff0c;因為測試失敗&#xff0c;會導致打包失敗。目前有兩種方式可以跳過測試&#xff1a; 1. mvn clean package -DskipTests&#xff0c;這會跳過執行階須&#xff0c;但仍會生成測試所…

美業+智能體,解鎖行業轉化新密碼(2/6)

摘要&#xff1a;中國美業市場近年蓬勃發展&#xff0c;規模持續擴大&#xff0c;預計不久將突破萬億級別&#xff0c;但同時也面臨著諸多挑戰&#xff0c;如獲客成本攀升、服務質量不穩定、難以滿足消費者多元化個性化需求等。智能體技術的出現為美業帶來了新的發展機遇&#…

設計模式——責任鏈設計模式(行為型)

摘要 責任鏈設計模式是一種行為型設計模式&#xff0c;旨在將請求的發送者與接收者解耦&#xff0c;通過多個處理器對象按鏈式結構依次處理請求&#xff0c;直到某個處理器處理為止。它包含抽象處理者、具體處理者和客戶端等核心角色。該模式適用于多個對象可能處理請求的場景…

react/vue移動端項目,刷新頁面404的原因以及解決辦法

一 、 項目 移動端 二、背景 1、問題描述&#xff1a;react/vue移動端項目&#xff0c;正常的頁面操作跳轉&#xff0c;不會出現404的問題&#xff0c;但是一旦刷新&#xff0c;就會出現404報錯 2、產生原因&#xff1a; React Router是客戶端的路由&#xff0c;當再次刷新時…

數據結構-算法學習C++(入門)

目錄 03二進制和位運算04 選擇、冒泡、插入排序05 對數器06 二分搜索07 時間復雜度和空間復雜度08 算法和數據結構09 單雙鏈表09.1單雙鏈表及反轉09.2合并鏈表09.2兩數相加09.2分隔鏈表 013隊列、棧、環形隊列013.1隊列013.2棧013.3循環隊列 014棧-隊列的相互轉換014.1用棧實現…

用JS實現植物大戰僵尸(前端作業)

1. 先搭架子 整體效果&#xff1a; 點擊開始后進入主場景 左側是植物卡片 右上角是游戲的開始和暫停鍵 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

深入理解設計模式之代理模式

深入理解設計模式之&#xff1a;代理模式 一、什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式。它為其他對象提供一種代理以控制對這個對象的訪問。代理對象在客戶端和目標對象之間起到中介作用&#xff0c;可以在不改變目標…

Ubuntu設置之初始化

安裝SSH服務 # 安裝 OpenSSH Server sudo apt update sudo apt install -y openssh-server# 檢查 SSH 服務狀態 sudo systemctl status ssh # Active: active (running) since Sat 2025-05-31 17:13:07 CST; 6s ago# 重啟服務 sudo systemctl restart ssh自定義分辨率 新…

【仿生機器人】極具前瞻性的架構——認知-情感-記憶“三位一體的仿生機器人系統架構

基于您的深度需求分析&#xff0c;我將為您設計一個全新的"認知-情感-記憶"三位一體的仿生機器人系統架構。以下是經過深度優化的解決方案&#xff1a; 一、核心架構升級&#xff08;三體認知架構&#xff09; 采用量子糾纏式架構設計&#xff1a; 認知三角&#xf…

Python量化交易12——Tushare全面獲取各種經濟金融數據

兩年前寫過Tushare的簡單使用&#xff1a; Python量化交易08——利用Tushare獲取日K數據_skshare- 現在更新一下吧&#xff0c;這兩年用過不少的金融數據庫&#xff0c;akshare&#xff0c;baostock&#xff0c;雅虎的&#xff0c;pd自帶的......發現還是Tushare最穩定最好用&…

python打卡day39@浙大疏錦行

知識點回顧 圖像數據的格式&#xff1a;灰度和彩色數據模型的定義顯存占用的4種地方 模型參數梯度參數優化器參數數據批量所占顯存神經元輸出中間狀態 batchisize和訓練的關系 1. 圖像數據格式 - 灰度圖像 &#xff1a;單通道&#xff0c;像素值范圍通常0-255&#xff0c;形狀為…

源碼解析(二):nnUNet

原文 &#x1f600; nnU-Net 是一個用于生物醫學圖像分割的自配置深度學習框架&#xff0c;可自動適應不同的數據集。可用于處理和訓練可能規模龐大的二維和三維醫學圖像。該系統分析數據集屬性并配置優化的基于 U-Net 的分割流程&#xff0c;無需手動參數調整或深度學習專業知…

clickhouse如何查看操作記錄,從日志來查看寫入是否成功

背景 插入表數據后&#xff0c;因為原本表中就有數據&#xff0c;一時間沒想到怎么查看插入是否成功&#xff0c;因為對數據源沒有很多的了解&#xff0c;這時候就想怎么查看下插入是否成功呢&#xff0c;于是就有了以下方法 具體方法 根據操作類型查找&#xff0c;比如inse…