ادغام پایان ابر HARMONYOSNEXT (6)

در مقاله قبلی ، ما در مورد پایگاه داده های ابری و ذخیره سازی ابری بحث کرده ایم.توابع ابری。
آشنایی با توابع ابر
توابع ابر در واقع فناوری بدون سرور است. می توان درک کرد که توابع ابری بدون توجه به خرید سرور ، استقرار ، امنیت ، عملکرد و غیره ، خدمات خاص را در باکترهای سنتی پیاده سازی می کنند.
موضوعات مربوطه را لیست کنید و روی توسعه خاص تجارت تمرکز کنید. عملکرد ابر Harmonyos در مرحله بعدی از Syntax TypeScript استفاده می کند ، که برای دانش آموزانی است که با JS یا Arkts آشنا هستند.
شروع کار آسان است.
علاوه بر این ، توابع ابر توانایی فراخوانی سایر توابع ابر ، رابط های شخص ثالث ، ذخیره ابری و پایگاه داده های ابری را دارند. برای برنامه های کاربردی در توسعه یکپارچه Duanyun ، توابع ابری می تواند با توجه به چنین سناریوهایی استفاده شود.
- پرس و جو ساده پایگاه داده و مدیریت فایل ابری می تواند مستقیماً توسط عملیات مشتری استفاده شود.
- TricumberSom یا شامل عملیات ایمن است ، می توانید تجارت خود را از سمت عملکرد ابر خارج کنید و مدیریت پروژه ها را آسان تر می کند.
در این فصل همچنین نحوه توسعه ، ایجاد ، اشکال زدایی و استقرار توابع ابری و همچنین فراخوانی سایر توابع ابر ، فراخوانی رابط های شخص ثالث ، فراخوانی Cloud Storage و فراخوانی Cloud در سمت عملکرد ابر توضیح داده خواهد شد.
بانک اطلاعاتی
توابع ابر ایجاد کنید
می توانید یک عملکرد ابر یا یک شی ابری را ایجاد کنید. در اینجا توصیه می شود که اشیاء ابری برای تسهیل در اجرای منطق تجارت انتخاب شوند. چرا ، به عنوان مثال Crud یک کتاب در یک شی قرار می گیرد. به عنوان مثال ، مثال زیر.
- لیستی از توابع ابری
// 云函数
let myHandler = async function (event, context, callback, logger) {
// 这里写不同的业务逻辑,都是都耦合在一个myHandler中
callback();
};
export { myHandler };
- لیستی از اشیاء ابری
export class Book {
// 增加
add() {
return {};
}
// 删除
delete() {}
// 修改
update() {}
// 查询
query() {}
}
یک شیء ابر جدید ایجاد کنید ، نام Object Cloud Book است.
پرونده جدید زیر را دریافت کنید ، کجا book.ts
این منطق خاص تجارت کتاب Object Object را می نویسد.function-config.json
این در مورد پیکربندی مربوط به شیء ابر مانند تأیید اعتبار است.package.json
این پرونده توضیحات شیء ابر است و عملکرد خاص آن مشابه است oh-package.json
، اطلاعات پس از نصب بعدی وابستگی های شخص ثالث در اینجا ثبت می شود.
عملکرد-config.json
محتوای پرونده به شرح زیر است.
{
"handler": "book.Book",
"functionType": 1,
"triggers": [
{
"type": "http",
"properties": {
"enableUrlDecode": true,
"authFlag": "true",
"authAlgor": "HDA-SYSTEM",
"authType": "apigw-client"
}
}
]
}
تجزیه و تحلیل مربوط به شرح زیر است
-
هندلر نمایانگر ورودی شیء ابر است
-
FunctionType نوع عملکرد را نشان می دهد ، “0” عملکرد ابر را نشان می دهد ، و “1” نشان دهنده شی ابر است. مقدار “functionType” به طور خودکار هنگام ایجاد تولید می شود و نمی تواند به صورت دستی اصلاح شود ، در غیر این صورت باعث می شود استقرار عملکرد ابر از بین برود.
-
Triggers نمایانگر عملکردی است که باعث ایجاد شیء ابر می شود
- نوع: نوع ماشه ، به عنوان “HTTP” پیکربندی شده است.
- خواص: ویژگی ماشه ، پارامترهای خاصیت در جدول زیر نشان داده شده است.
پارامتر تصریح کردن EnableDecode هنگام ایجاد یک عملکرد از طریق یک ماشه HTTP ، آیا می توانید بدنه درخواست را با ContentType “Application/X-WWW-Form-Urlencoded” رمزگشایی کنید و آن را با استفاده از urldecoder به عملکرد منتقل کنید. درست: فعال نادرست: فعال نشده است. عکسبرداری این که آیا احراز هویت یا نه ، پیش فرض درست است. وابسته به الگوریتم احراز هویت ، پیش فرض به سیستم HDA. نوع نوع احراز هویت ماشه HTTP. APIGW-CLIENT: احراز هویت دروازه سمت انتهایی ، مناسب برای تماس های عملکردی از طرف مشتری برنامه (یعنی برنامه محلی یا پروژه). CloudGW-Client: احراز هویت دروازه سمت ابر ، مناسب برای تماس های عملکردی از طرف سرور برنامه (یعنی توابع ابر).
OH-package.json
محتوای پرونده به شرح زیر است.
{
"name": "book",
"version": "1.0.0",
"description": "",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {}
}
توضیحات مربوطه به شرح زیر است.
-
name
: نام پروژه را نشان می دهد -
version
: شماره نسخه پروژه -
description
: توضیحات پروژه -
scripts
: یک شیء حاوی دستورات مختلف اسکریپت -
author
: اطلاعات نویسنده پروژه -
license
: مجوز منبع باز استفاده شده توسط پروژه ، اینجا است"ISC"
-
dependencies
: اطلاعات وابسته به پروژه
کتاب
تجزیه پرونده book.ts به شرح زیر است.
- Methers1می توان چندین روش خاص برای نمایش اشیاء ابری وجود داشت.
- params1、params2آیا پارامتر به شیء ابر منتقل شده است
- بازگشت محتوا به تماس گیرنده شیء ابر بازگردانده می شود
اشکال زدایی توابع/اشیاء ابر
هنگام توسعه اشیاء ابری ، اغلب نیاز به نوشتن منطق تجارت دست و پا گیر دارید ، بنابراین اشکال زدایی شیء ضروری است. استودیوی Deveco دارای پانل اشکال زدایی داخلی برای اشیاء ابری است. مراحل زیر را برای تسهیل اشکال زدایی اشیاء ابری دنبال کنید.
- اشکال زدایی شیء ابر را شروع کنید ، روی شیء ابر که می خواهید اشکال زدایی کنید ، راست کلیک کنید ، انتخاب کنید. اشکال زدایی “کتاب”
- پانل اشکال زدایی شیء Cloud را باز کنید
- پانل ورود شیء ابری
هنگامی که ما از console.log برای اشکال زدایی کد در یک شیء ابری استفاده می کنیم ، خروجی ورود به سیستم در این مکان است.
لازم به ذکر است که وقتی کد شیء ابر را اصلاح می کنیم ، باید دوباره کلیک کنیم. کتاب اشکال
استقرار اشیاء ابری
هنگامی که شیء ابری توسعه داده می شود ، اگر می خواهید با مشتری تماس بگیرید یا در محیط تولید به صورت آنلاین بروید ، باید آن را مستقر کنید. روی شیء ابر خود راست کلیک کرده و انتخاب کنید اعزام “کتاب” می توانید اشیاء ابری خود را به ابر مستقر کنید. همچنین می توانید راست کلیک کنید ابله همه اشیاء ابری را مستقر یا همگام سازی کنید.
اگر می خواهید شیء ابر را که قبلاً به ابر مستقر شده اید بارگیری کنید ، انتخاب کنید کتاب همگام سازی عادل
اگر استقرار موفقیت آمیز باشد ، در گوشه پایین سمت راست یک فوریت مربوطه وجود خواهد داشت.
مشتری با اشیاء ابری تماس می گیرد
بعد از اینکه شیء ابر را ایجاد کردیم ، می توانیم از مشتری استفاده کنیم تا مستقیماً با روش Cloud Object تماس بگیریم.
اگر مشتری با عملکرد ابر تماس می گیرد ، می توانید به کد زیر مراجعه کنید.
کد اصلی به شرح زیر است.
try {
const res = await cloudFunction.call({
// 云对象的名称,这个和你创建的云对象文件名一致
name: "book",
data: {
// book云对象的methods1方法
method: "method1",
// 传递给method1的参数
params: ["a", "b"],
},
});
AlertDialog.show({ message: JSON.stringify(res, null, 2) });
} catch (e) {
console.error(e.message + " " + e.code);
}
آنچه در اینجا متمرکز شده است این استمشتری با اشیاء ابری تماس می گیرد。
Deveco Studio یک روش مناسب برای اجرای عملکرد مشتری فراری اشیاء Cloud را فراهم می کند. این به ما اجازه می دهد تا مستقیماً اشیاء ابری مانند روشهای شیء عادی را فراخوانی کنیم!
مراحل خاص عمل به شرح زیر است.
- بر اساس اشیاء ابری ، یک مدل فراخوانی از اشیاء ابری را در سمت مشتری ایجاد کنید. روی کتاب Object Cloud خود راست کلیک کنید. انتخاب کردن ایجاد رابط کاربری
- مسیر ذخیره فایل مدل را انتخاب کنید
- پس از تولید موفق ، دو پرونده کلیدی به دست می آید
ImportObject.ts
وتBook.ets
ImportObject.ts
عملکرد اصلی پرونده استفاده از روش پروکسی پروکسی در هنگام تماس کاربر استBook.method1
هنگامی که این روش در داخل اجرا می شود ، روش عملکرد ابر نامیده می شود.cloudFunction.call
روش راحتی را برای ما فراهم می کند تا اشیاء ابری را فراخوانی کنیم. کد به شرح زیر است.
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2024. All rights reserved.
* Generated by the Cloud Object compiler. DO NOT EDIT!
*/
import type { BusinessError } from "@kit.BasicServicesKit";
import { cloudFunction } from "@kit.CloudFoundationKit";
export interface CloudObjectLikely {
name: string;
}
function mockMethod<T extends CloudObjectLikely>(
target: T,
version: string,
prop: string | symbol
): (...args: unknown[]) => Promise<unknown> {
return async (...args: unknown[]) =>
new Promise((resolve, reject) => {
cloudFunction
.call({
name: target.name,
version: version,
data: {
method: prop,
params: args,
},
})
.then((value: cloudFunction.FunctionResult) => {
resolve(value.result);
})
.catch((err: BusinessError) => {
reject(err);
});
});
}
export function importObject<T extends CloudObjectLikely>(
tClass: new () => T,
version = "$latest"
): T {
return new Proxy<T>(new tClass(), {
get(target, prop): (...args: unknown[]) => Promise<unknown> {
return mockMethod<T>(target, version, prop);
},
});
}
Book.ets
عملکرد پرونده برای مراجعه به مدل کتاب Object Cloud و تولید کلاس های مربوطه برای تسهیل ما در تماس با اشیاء ابری است. کد به شرح زیر است.
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2024. All rights reserved.
* Generated by the Cloud Object compiler. DO NOT EDIT!
*/
import type { CloudObjectLikely } from "../ImportObject";
export class Book implements CloudObjectLikely {
public name = "book";
public async method1(
param1: any,
param2: any
): Promise<{
simple: string;
param1: any;
param2: any;
}> {
return Promise.reject(new Error("Method not implemented."));
}
}
- سرانجام ، واردات در مشتری لازم است
Book
وتimportObject
، سپس تماس بگیرید
// 这里需要对Book进行重命名,因为和之前的数据库类型Book重名了
import { Book as BookCloudObj } from "../cloudobject/book/Book";
import { importObject } from "../cloudobject/ImportObject";
Button("调用云对象14的方法").onClick(this.fn14);
fn14 = async () => {
try {
let bookObj = importObject(BookCloudObj); // 使用importObject实例化BookCloudObj的代理
const res = await bookObj.method1("100", "200");
AlertDialog.show({ message: JSON.stringify(res, null, 2) });
} catch (e) {
console.error(e.message + " " + e.code);
}
};
- نتیجه تماس در شکل نشان داده شده است.
شیء ابر فراخوانی شیء ابر
در توسعه واقعی ، در شرایط عادی ، یک تجارت خاص در یک شیء ابری خاص وجود دارد ، اما یک ارتباط اساسی بین مشاغل وجود دارد. به عنوان مثال ، تمام کتابهای نوشته شده توسط یک نویسنده خاص را پرس و جو کنید. نویسنده می تواند یک شیء ابر جداگانه باشد و کتاب نیز یک شیء ابری جداگانه است ، بنابراین نیاز به فراخوانی شیء ابر بین اشیاء ابر وجود خواهد داشت. ما می توانیم با فراخوانی شیء ابر AUTH از طریق Object Cloud Object نشان دهیم.
از آنجا که اشیاء ابری پس از استقرار در ابر مستقل هستند ، چندین اشیاء ابری را نمی توان به سادگی به عنوان روابط بین همان دایرکتوری در نظر گرفت ، یعنی اشیاء ابری A نمی توانند مستقیماً اشیاء ابری B را با استفاده از مسیرهای نسبی وارد کنند!
-
ایجاد شیء ابر AUTH این مرحله بالا برای ایجاد یک شیء ابر کتاب است
-
تنظیمات دروازه شیء ابر AUTH را تنظیم کنید
function-config.json
در خانهنوعتنظیم شده cloudgw-client
"authType": "cloudgw-client"
- نوشتن کد منطق شیء ابر ابر
export class Auth {
getName(firstName, lastName) {
return { firstName, lastName, fullName: firstName + lastName };
}
}
- برای نصب کتابخانه Object Object Cloud سه طرفه ، لطفاً توجه داشته باشید که باید آن را در فهرست Cloud Object Directory نصب کنید
npm install @hw-agconnect/cloud-server
- کتاب تماس های Auth Cloud Object
import { cloud } from "@hw-agconnect/cloud-server";
export class Book {
async method1(param1, param2) {
const res = await cloud.function().call({
// 云对象的名称
name: "auth",
data: {
// 云对象的方法
method: "getName",
// 传递的参数
params: ["万", "大妈"],
},
});
return {
simple: "example",
param1,
param2,
res,
};
}
}
-
auth و کتاب به ابر اعزام می شوند
-
تماس تست مشتری ، تأثیر را تأیید کنید
پشتیبانی ، شیء ابر شیء ابر را صدا می کند.
Object Cloud Cloud را ذخیره می کند
پس از خواندن اسناد مربوطه ، فهمیدم که شیء ابر پشتیبانی بسیار کافی برای ذخیره ابری ندارد ، بنابراین من آن را در اینجا رد کردم.
Object Cloud Database Cloud را فراخوانی می کند
همچنین باید در اشیاء ابری معرفی شود @hw-agconnect/cloud-server
برای بهره برداری از پایگاه داده ابری. ما مراحل زیر را دنبال می کنیم. اجرای اشیاء ابر پرس و جو
عملکرد پایگاه داده را پرس و جو کنید.
- ابتدا یک مدل پوشه جدید را در کتاب Object Cloud ایجاد کنید تا پرونده هایی را که تولید می شود ذخیره کنید
- ماژول های شیء ابری تولید کنید که جداول کتاب را در ابر کار می کنند. در اینجا استودیوی Deveco به طور خودکار آن را برای ما تولید می کند. انتخاب کردنتولید مدل سرور。
سپس مسیر تولید شده را انتخاب کنید.
- پرونده را دریافت کنید
model/book.ts
، در اینجا برای بودن با مورد قبلیbook.ts
بیایید نام خود را بهmodel/bookModel.ts
بشر نام کلاس در پرونده نیز به اصلاح شده استBookModel
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2023. All rights reserved.
* Generated by the CloudDB ObjectType compiler. DO NOT EDIT!
*/
class BookModel {
id: number;
name: string;
price: number;
publish: Date;
hot: boolean;
cover: string;
constructor() {}
getFieldTypeMap(): Map<string, string> {
let fieldTypeMap = new Map<string, string>();
fieldTypeMap.set("id", "Integer");
fieldTypeMap.set("name", "String");
fieldTypeMap.set("price", "Double");
fieldTypeMap.set("publish", "Date");
fieldTypeMap.set("hot", "Boolean");
fieldTypeMap.set("cover", "String");
return fieldTypeMap;
}
getClassName(): string {
return "Book";
}
getPrimaryKeyList(): string[] {
let primaryKeyList: string[] = [];
primaryKeyList.push("id");
return primaryKeyList;
}
getIndexList(): string[] {
let indexList: string[] = [];
indexList.push("id");
indexList.push("price");
return indexList;
}
getEncryptedFieldList(): string[] {
let encryptedFieldList: string[] = [];
return encryptedFieldList;
}
setId(id: number): void {
this.id = id;
}
getId(): number {
return this.id;
}
setName(name: string): void {
this.name = name;
}
getName(): string {
return this.name;
}
setPrice(price: number): void {
this.price = price;
}
getPrice(): number {
return this.price;
}
setPublish(publish: Date): void {
this.publish = publish;
}
getPublish(): Date {
return this.publish;
}
setHot(hot: boolean): void {
this.hot = hot;
}
getHot(): boolean {
return this.hot;
}
setCover(cover: string): void {
this.cover = cover;
}
getCover(): string {
return this.cover;
}
static parseFrom(inputObject: any): BookModel {
let result = new BookModel();
if (!inputObject) {
return result;
}
if (inputObject.id) {
result.id = inputObject.id;
}
if (inputObject.name) {
result.name = inputObject.name;
}
if (inputObject.price) {
result.price = inputObject.price;
}
if (inputObject.publish) {
result.publish = new Date(inputObject.publish);
}
if (inputObject.hot) {
result.hot = inputObject.hot;
}
if (inputObject.cover) {
result.cover = inputObject.cover;
}
return result;
}
}
export { BookModel };
- یک فایل جدید ایجاد کنید
bookController.ts
، مسئول ترکیب عملیات CURD در نمونه های کتاب.
import { cloud, CloudDBCollection } from "@hw-agconnect/cloud-server"; //引入Server SDK依赖
import { BookModel } from "./model/BookModel"; //BookModel为对象类型名
// ZONE_NAME为存储区名称
const ZONE_NAME = "Study";
export class BookCtroller {
collection: CloudDBCollection<BookModel>;
constructor() {
this.collection = cloud
.database({ zoneName: ZONE_NAME })
.collection(BookModel);
}
//查询数据
async queryBooks() {
let query = this.collection.query();
return await query.get();
}
//更新数据
async upsertBooks(records: BookModel[]) {
return await this.collection.upsert(records);
}
//删除数据
async deleteBooks(records: BookModel[]) {
return await this.collection.delete(records);
}
}
- در آخر ، یک روش پرس و جو را به کتاب Object Cloud اضافه کنید.
// 查询数据库
async query() {
let bookCtroller = new BookCtroller();
const result = await bookCtroller.queryBooks()
return {
result
}
}
- فراخوان تست
سایر عملیات پایگاه داده می توانند بر اساس این الگوی گسترش یابد.
Cloud Object API شخص ثالث را صدا می کند
اگر می خواهید با API های دیگر تماس بگیرید ، می توانید Axios را مستقیماً به روشی ساده نصب کنید ، و سپس از Axios درست مانند تماس با رابط استفاده کنید.
خلاصه کردن
- آشنایی با توابع ابر: توابع ابر فناوری بدون سرور است ، که نحو TypeScript را اتخاذ می کند ، بنابراین توسعه دهندگان نیازی به توجه به موضوعات مرتبط با سرور ندارند و بر توسعه تجارت تمرکز می کنند. این توانایی را دارد که سایر توابع ابر ، رابط های شخص ثالث ، ذخیره ابری و پایگاه داده های ابری را فراخوانی کند. پرس و جو پایگاه داده ساده و سایر عملیات را می توان در سمت مشتری انجام داد و عملیات دست و پا گیر یا ایمن برای سمت عملکرد ابر مناسب است.
-
توابع ابر ایجاد کنید: توصیه می شود برای ایجاد یک شیء ابری به عنوان نمونه انتخاب کنید. یک شیء ابری ایجاد کنید و تولید می شود
book.ts
(نوشتن منطق کسب و کار) ،function - config.json
(پیکربندی شیء ابر ، مانند ورود ، نوع عملکرد ، ماشه و غیره) ،package.json
(مشابهoh - package.json
، ضبط اطلاعات و وابستگی های پروژه). - اشکال زدایی توابع/اشیاء ابر: در استودیوی Deveco ، برای شروع اشکال زدایی ، روی Object Cloud کلیک راست کنید و “Book” را انتخاب کنید. پس از اصلاح کد ، باید دوباره روی “کتاب اشکال زدایی” کلیک کنید.
- استقرار اشیاء ابری: پس از اتمام توسعه ، بر روی Object Cloud راست کلیک کرده و “استقرار” کتاب “را برای استقرار به ابر انتخاب کنید ، یا بر روی” CloudFouches “راست کلیک کنید تا همه اشیاء ابری را مستقر یا همگام کنید. برای بارگیری شیء ابری مستقر ، کتاب Sync را انتخاب کنید.
-
مشتری با اشیاء ابری تماس می گیرد: Deveco Studio یک روش مناسب برای تولید یک مدل تماس با کلیک راست روی شیء ابر و انتخاب “تولید رابط” برای تولید یک مدل تماس و سپس انتخاب مسیر ذخیره سازی برای دریافت آن فراهم می کند.
ImportObject.ts
(از پروکسی برای اجرای روشهای فراخوانی عملکرد ابر استفاده کنید) وBook.ets
(به کلاس تولید شده توسط مدل Object Cloud مراجعه کنید). پس از وارد کردن مشتری پرونده های مربوطه ، می توان از روش Object Cloud استفاده کرد. -
شیء ابر فراخوانی شیء ابر: گرفتن شیء Cloud Object نامیده می شود Auth Cloud Object به عنوان نمونه ، شما باید یک شیء Cloud Auth جدید ایجاد کنید و تنظیمات Gateway را تنظیم کنید (
function - config.json
میانهنوعتنظیم شدهcloudgw - client
) ، کد منطقی Object Object را بنویسید ، و کتابخانه سه جانبه شیء Cloud را در فهرست کتاب Cloud Object نصب کنید@hw - agconnect/cloud - server
، سپس شیء ابر AUTH را در کتاب Cloud Object فراخوانی کنید و در آخر دو شیء ابر را به ابر مستقر کنید و تماس با مشتری را آزمایش کنید. - Object Cloud Cloud را ذخیره می کند: این سند نشان می دهد که اشیاء ابری پشتیبانی کافی برای ذخیره ابری ندارند ، بنابراین از آن پرش می شود.
-
Object Cloud Database Cloud را فراخوانی می کند: یک مدل پوشه جدید را در کتاب Object Object ایجاد کنید ، ماژول Object Cloud را که جدول کتاب را از طریق استودیوی Deveco کار می کند ، ایجاد کنید و به دست آورید
bookModel.ts
پرونده و محتوای مرتبط را تغییر دهید. جدیدbookController.ts
این پرونده وظیفه ترکیب عملیات CURD را در نمونه کتاب و در آخر اضافه کردن روش های پرس و جو به کتاب Object Cloud و ایجاد تماس های آزمایشی دارد. - Cloud Object API شخص ثالث را صدا می کند: روش ساده تر برای تماس با API های دیگر نصب Axios و سپس استفاده از آن مانند تماس با رابط است.
اسناد مرجع
- Cloud Side از پایگاه داده Cloud از طریق SDK استفاده می کند
- @hw-agconnect/cloud-server
- توسعه یکپارچه ترمینال و ابر
اگر شما علاقه مند به کسب اطلاعات بیشتر در مورد جزئیات و آخرین اطلاعات در مورد توسعه برنامه Hongmeng هستید ، لطفاً یک پیام بگذارید یا یک پیام خصوصی را در حوزه نظر ارسال کنید یا اطلاعات شخصی من را بخوانید.