摘要: 阿里云函数计算是一个事件驱动的全托管计算服务通过函数计算, 您无需管理服务器等基础设施, 只需编写代码并上传微信小程序是一种不需要下载安装即可使用的应用, 它可以在微信内被便捷地获取和传播 当微信小程序遇见 serverless, 他们会产生奇妙火花, 利用函数计算可以快速搭建微信小程序的 serverle.
前言
这篇文章适合所有的想微信小程序开发新手老鸟以及想准备学习开发微信小程序的程序猿本文以开发一个类似语音口令红包小程序为例, 向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端
demo 概览
在本教程中, 我们讲解如何利用函数计算一步一步来构建微信小程序的 server 端, 其中小程序参考口令红包, 实现一个简单版本, 该 demo 中可以展示口令生成, 口令转发, 口令语音验证
微信语音红包小程序是基于微信小程序而开发的语音红包, 发起者可以写下想要让别人说的话 (口令), 并且将钱塞入此红包中, 其他用户只要读出这句话(口令) 就可以获得红包语音红包可以发到特定的好友微信群以及朋友圈, 朋友需要根据文字口令说出相应的语音, 才能获得红包这种互动行为, 在朋友圈或者微信群社交的场景下, 可以极大调动互动活跃度, 规则简单方便, 体验趣味十足, 口令的形式丰富多样(恶搞示爱祝贺说口号甚至是广告语), 这些都让口令红包一直维持很高的热度
demo 客户端小程序具体效果截图如下:
生成口令
转发口令
录音验证口令
传统服务器架构 VS Serverless 架构
正常来说, 除了少数纯客户端的微信小程序运用, 绝大部分的小程序都有自己的 server 端用户开发 server 端服务, 常常面临开发效率, 运维成本高, 机器资源弹性伸缩等痛点, 而使用 Serverless 架构可以很好的解决上述问题下面是传统架构和 Serverless 架构的对比:
阿里云函数计算是一个事件驱动的全托管计算服务通过函数计算, 您无需管理服务器等基础设施, 只需编写代码并上传函数计算会为您准备好计算资源, 以弹性可靠的方式运行您的代码, 并提供日志查询, 性能监控, 报警等功能借助于函数计算, 您可以快速构建任何类型的应用和服务, 无需管理和运维
Serverless 架构详解
方案大致如上图所示, 主要分为以下三个模块:
Login & Auth
微信建议登录时序图如下, 其中第三方服务器用 FC 实现:
语音识别(包含音频格式转换)
ffmpeg 进行音频格式转换
百度语言识别开发文档
方案图下部虚线框柱的是可以拓展的模块, 本 demo 中不展示, 用户可以根据需求接入
比如微信小程序直接上传文件到 oss 保存, 函数计算可以从 oss 拉取对应的数据做处理; 如果需要数据库功能, 可以采用 ots
demo 开发配置步骤
准备工作:
1, 开通阿里云账号, 同时需要开通的产品有函数计算, api 网关
2, 购买独立域名, 同时需对域名备案, 以及购买阿里云免费 ssl 证书, 购买步骤可参考免费申请阿里云 DV SSL 证书
3, 开通微信小程序开发认证, 以及百度语音识别
4, 从 github 下载相应的源码, 里面 client 目录表示客户端, server 表示用于创建函数
FC 端
1, 利用源码中的 server 目录创建服务端函数, 比如函数名为 wechatEntry, 有以下两种方案创建函数:
利用控制台打包上传, 设置对应的 handler, 函数计算控制台使用可参考 hello world, 特别是控制台上传代码包创建函数部分下面是重要步骤截图:
函数计算熟悉 fcli 的工具的老用户可以使用函数计算命令行工具 fcli
fcli function create -f wechatEntry -h main.handler -d server -t python2.7 -s wechat
注意: 上面两种方案创建函数之前都需先把函数中 main.py 中相关开发配置改成自己申请的, 包括微信小程序开发者相关配配置, 百度语音识别相关配置
2, 以函数计算作为 API 网关后端服务
api 网关支持 https 服务
函数计算作为 api 网关后端服务
api 网关中设置函数对应的 api 分组配置独立域名
最后效果图以及调试界面如下:
client 端
按照微信小程序官方教程, 创建对应的小程序账号以及工程, 需要注意的是要把 api 网关中配置的域名添加到微信小程序的开发配置中:
直接用微信小程序开发工具打开, 修改对应请求域名和 appid 即可, 打开如下图所示:
总结
利用函数计算可以快速搭建微信小程序的 serverless 运用, 结合 oss,ots 可以丰富 server 的功能, 免服务器, 免运维, 成本低, 不用担心流量, 只需要函数就可以实现, 你值的拥有!
来源: http://geek.csdn.net/news/detail/254133