腾讯云
微信小程序云端解决方案
探索之路
腾讯云
探索之路
小程序特性思考
挑战与尝试
整合
前端工程师如何理解小程序?
小程序是H5 应用吗?
不是
小程序不是H5 应用
• 无法使用DOM 接口
• HTML5 生态中基于DOM 的库全部无法使用(如
jQuery )
• 并非URL 访问,没有域名概念
• 不存在跨域问题
• 无Cookie 存储
• 小程序更偏向CS 架构
小程序和传统CS 架构的
区别在哪儿?
网络和续航
• 网络环境复杂
• 过于消耗资源会导致续航下降
• 小程序对网络优化和资源优化提出要求
伸缩能力
• 传播和社交特性可能会带来业务的突然增长
• 小程序对后台架构的伸缩能力有高要求
我们进行的尝试
上传下载场景 会话管理服务 WebSocket 服务 视频点播场景
挑战在哪儿
会话服务 WebSocket 服务
会话管理的挑战
• 小程序不支持Cookie 传输,需
要自己实现会话服务
会话管理目标
• 完成微信要求的鉴权流程,生成用户会话
• 利用会话确定每个请求对应哪个微信用户
• 安全性和扩展性要求
会话建立过程
会话管理客户端SDK 会话管理服务器SDK
小程序 1. 请求登录 业务服务器 2. 换取会话 微信服务器
(code, rawData, signature ) (code, appid, appsecret)
6. 返回会话 3. 返回会话
(session_id) (session_key)
5. 建立并
保存会话 4. 验证签名
Redis
会话服务效果分析
• 以Node SDK 的形式完成了功能性目标
• 其它后端语言不通用
• 小程序appId 和appSecret 安全性问题
• 缺少横向扩展能力
会话服务改进
• 独立会话管理服务器
• 提供多语言SDK
• appId 和appSecret 存放到数据库
改进的会话建立流程
小程序 业务服务器 会话服务器 微信服务器
wx.login() 获取 code
wx.getUserInfo() 获取 (encryptedData, iv)
请求登录 请求登录 j scode2session
(code, encryptedData, iv) (code, encryptedData, iv) (code, appId, appSecret)
(sess