云原生微信小程序开发实战读书笔记-7

云开发的角色:后端服务

云开发其实是一种后端服务,和服务器所扮演的角色类似,都是服务端角色。不过云开发把服务所需要的一些资源(比如计算、存储、消息推送等)封装打包,以方便开发者使用。整体上讲,云开发包括了云函数、云数据库、云存储、云托管等一些基础服务资源,以及云上的各种扩展能力(比如图像处理、客服服务等)。

  • 云函数是独立的计算资源,通过触发执行逻辑运算或者资源处理,最终返回结果;

  • 数据库是遵循 Mongo 协议的非关系型数据库,可以直接通过各种 API 进行调用处理;

  • 云存储是云开发提供的专门的存储空间,有基础 API 进行文件管理。

    而这些基础服务资源(数据库、云函数、云存储)都被整合到一套接口调用标准中,根据这套标准以及适用端场景,会产生各种 SDK,分别专注于客户端、云函数端、管理端等进行资源统筹和处理。

微信云原生的后端云服务

先来说说使用自己搭建的开发者服务器

微信为了保证微信小程序体系的安全性,所有用户的小程序并不是直接请求的开发者服务器,而是通过微信服务器进行转发,这也就意味着,维系用户身份经常使用的 cookie 和 session 无法正常运作。那怎么让服务器知道它所接收的请求是由哪个用户发出的呢?另外怎么判断接收到的请求是否来自真实用户呢?

于是就有了以下的登录体系:

image (5).png

而有了微信云原生的云开发服务

首先微信服务器和云开发服务本身做了互相信任,并且从小程序端的调用一直到云开发服务都是采用和微信一致的私有链路,安全性有很大的保证。

在链路安全的情况下,微信小程序直接在这个链路内天然地嵌入用户身份认证。也就是说,当小程序调用云开发云函数时,会自带用户的 openid,天然地鉴权。

登录流程就会简化许多:

image (6).png

云开发还有其他平台

除了微信小程序之外,云开发也在原生支持多端平台以及应用,甚至可以跨端跨平台统一提供服务,每一个端都和微信小程序一样有专业成熟的 SDK 用于管理和调用资源,比如适用于 QQ 小程序的 QQ-SDK;适合 WEB 网页开发的 JS-SDK 等。

如果你不满足 SDK 调用的方式,可以使用云开发原生的云接入,直接将云开发服务通过 HTTP 方式进行外发。如果深度了解你还会发现,云函数不仅仅能用来计算,还可以用来渲染页面以及其他更多的地方,比如封装成 URL 接口,页面转发等。

除了很常见的用户名登录之外,云开发在还集成了短信验证码登录、邮件登录、微信公众号登录、微信开放平台登录、匿名登录等多种登录方式。这其中有很大一部分都与身份提供者本身做了原生的链路优化,比如微信体系登录,在开发者的视角下,只需要 SDK 调用即可,不用去关系配置以及令牌获取方面的问题。