#夏日挑战赛# 【FFH】鸿蒙Serverless云函数搭建,告别传统后端? 原创 精华
在6月19号,我在深圳分会场参与了“消失的服务器”HSD线下活动,HSD线下活动主要讲解了华为Serverless如何帮助开发者无服务器构建应用。在后面的限时Codelabs中,要求利用云函数做一个猜数字的安卓应用或者鸿蒙应用。我选择了后者,碍于没有提前做准备,集成云函数环境耗费了太多时间,也踩了很多坑,导致最后没能完成。本文将从零开始集成云函数服务,在云端完成猜数字的函数,Serverless服务或许是正在被引导的一种方向。
0. Serverless
关于Serverless服务,在华为开发者论坛上有一篇博文讲得非常详细,读者可仔细阅读。
Serverless服务帮您无服务器构建应用
那么Serverless到底有哪些优点,能帮我们做哪些事情呢?
- 成本可控化
在传统的开发模式中,一款APP从开发到上架,其中的业务分析,架构设计,商业运营,后期运维,这期间有非常多的沟通时间,成本,较长的开发周期。Serverless云服务,恰好能够提供这样一系列的针对性的云服务,让原先未知的不可控的成本开销,变得似乎可以量化。 - 专注业务开发
Serverless提供认证服务、云服务、云数据库、云托管、云存储以及Serverless模板等构建能力,统一构建自动弹性伸缩的后端服务。具有跨平台、上限快、低成本、免运维等特点。那么这样,大多数后端逻辑如果都基于Serverless开发,那么只需要聚焦业务代码的开发即可,关于后端的管理和运维都交给了云服务。
我粗浅的理解,一个前端开发者也能借助Serverless的简易便捷性,在低学习成本下,也能快速从前到后构建一个APP。
1.准备工作
1.3 业务分析
我们需要利用云函数,在云端判断猜测是否正确,应用端只负责接收用户传入的猜测的数字和传递随机数,数字传入云函数,云函数判断是大了,还是小了,还是猜对了,并且返回应用端。
说白了,这个判断在云端完成,HarmonyOS应用侧只负责编写页面,接收数据,返回结果,不做任何判断的事情。
1.2 创建应用,创建项目
- 创建一个应用,并且在AppGallery Connect创建项目,注意包名一致哦!
- 在HarmonyOS侧的云函数集成方式,目前只能在JAVA侧,不过由于HarmonyOS存在JS,JAVA的混合开发模式,编程语言倒不是问题。
2.集成云函数服务
这个环节,也是我踩坑比较多的环节,导致最后没能完成!
2.2 添加配置文件
2.2.1 我们进入到前文创建好的项目页面
选择下载配置文件,不包含密匙。
配置文件中默认会包含AGC为应用分配的客户端密钥和API密钥信息,但是经过尝试存在一定BUG。所以我们选择不包含密匙,在应用启动时候再分配密匙。
2.2.2 添加进入HarmonyOS项目工程的应用级目录
2.2.3 添加依赖
进入应用级的build.gradle文件。
添加依赖, implementation ‘com.huawei.agconnect:agconnect-function-harmony:1.3.1.300’
我们可以看到关键词,function这里对应的就是云函数的服务,还有云数据库之类的服务也有对应的关键词,但是似乎存在一定的bug,并且服务版本较低,相对提供给安卓的服务还是有一定差距。
2.3 启动应用时,分配密匙
前面我们在工程文件中放入了不含密匙的配置文件,我们需要在应用启动时候分配密匙。
- 我们先把前文的配置文件复制一份到resources/rawfile/目录下
- 我们进入JAVA文件夹中,打开MyApplication进行编写。
注意:
代码中所需要的,client_id、client_secret和api_key参数分别来自于AGC构建的对应的项目页面上。
2.4 添加权限!!!!!
进入config.json文件
在"abilities"下添加
至此,应用侧环境配置完成,下面为项目编写猜数字的云函数。
3.编写云函数
3.1 创建云函数
- 我们在我的项目页面,左侧栏上找到云函数,点击进入。
- 点击,立即开通。
- 点击,创建函数,进入到创建函数页面。
这里的函数名称自拟,我们可以看到这里提供了在线编辑函数,或者上传其他编程语言的压缩包。这里我们在线进行Javascript编程。
3.2 编写云函数
我们进行在线的云函数编写。
- 业务代码
- 函数创建完成后,点击右上角保存保存
3.3 添加触发器
- 选择触发器,点击添加触发器
- 创建成功后,查看信息,找到函数的标识符号
这个名称非常重要,是我们进入函数的标识!
至此,云函数已经编写配置完成了,接下来是应用的简单编写。
4. HarmonyOS侧应用
4.1 启动云函数功能
启动云函数功能,只需要实例化AGConnectFunction即可
我们对云函数的调用都是通过function实现的
4.2 调用云函数
4.3 简单Demo
- 界面
- MainAbilitySlice
5. 结果
关于codelab的内容其实是非常简单的,只是在环境配置上走了不少弯路,尤其是权限的赋予非常重要。在Serverless的加持下,开发人员能够专注于核心业务的开发,一些运维后端的处理可以交由云端托管。目前Serverless的全套服务在安卓上有非常多的案例,也比较好适配。鸿蒙开发上似乎资料不多,案例较少,但未来Serverless势必会全套适配鸿蒙开发。届时,必大有可为。
!有点东西