你好,我是冠宇,从这个模块开始,就由我带着你一起学习。

在开篇词中,俊鹏讲到云开发诞生的背后动力是困扰前端开发者们的一个核心问题:对后端的依赖。那云开发到底怎么去优化和解决这个问题的呢? 这就是我们今天这节课要讨论的话题。

通过探讨这个问题,你能深刻认识到云开发到底是什么,并通过一些实际场景了解云开发在应用中发挥的作用。当然,你可以把这一讲当作整个模块的总纲,先从宏观上建立整体的认知,再深入细节,掌握后面的知识,比如怎么设计简单易用的云开发函数。

云开发的角色:后端服务

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

在调用方式上, 云开发的使用方法和前端开发差不多,它将触手可及的各种资源以接口 SDK 的形式给到开发者。举个例子,如果开发微信小程序,需要存储用户的个人数据以方便应用业务,你可以用云开发的接口把数据存入数据库,这个接口并不是 URL 地址,而是一个函数方法(function),举例如下:

如果你想对这些数据进行一些复杂的处理(比如对数据做分析,生成报表)涉及其他的数据,可以把处理的逻辑放到云开发云函数中进行,而云函数也可以在小程序中用函数方法(function)的形式调用,举例如下:

再深一步,如果你的微信小程序想存储一些文件,也可以直接使用云开发接口,调用上传文件,文件可以同时被小程序端和云函数端获取到,方便应用功能的开发,举例如下:

以上在开发小程序时所用到的数据库、云函数、云存储都是云开发提供的资源:

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

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

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

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

上述内容中,微信小程序的例子里提到的函数方法(function),其实是云开发微信小程序 SDK 提供的,而 SDK 在微信小程序中其实也是使用请求 URL 的方法(wx.request)实现的服务发送和接收。

你可能觉得没什么,把一些云服务的 URL 通过模块手段包装做一个 SDK 并不是很难。但真是这样的吗?要探究这个问题就不得不提云原生的概念了。

如何理解微信云原生的后端云服务?

很多同学对“原生”的理解是:初始的、未经修饰的、最初的,第一出现且未经任何外力、内力改变的个体。放到 App 开发上,原生开发就意味着用系统底层的能力,没有中间层的包装,性能更加优秀。

而在微信小程序上更接近于原生开发是因为很多小程序的系统能力或者组件,是以微信客户端的名义直接向系统发起调用,所以在通信中间没有过多的损耗数据和操作。而 WEB 网页开发就不是原生,因为所有的组件渲染和系统能力的使用都由浏览器提供或转发,此应用的性能完全取决于浏览器的性能。

以上是我们站在客户端角度来讨论原生,**那么在后端服务上,为什么也有原生呢?**我们以微信小程序的登录举例。

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

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

没有云开发的时候,所有开发者都是按照这个体系进行用户验证的,由于安全性等因素,微信服务器与开发者服务器无法互相信任,所以这一系列登录的步骤非常繁杂。那云开发在这里是如何做的呢?

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

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

如此一来,开发者就不用做上图的登录体系就可以直接拿到用户身份了。请你切身感受一下,这是不是原生云服务(也即云原生)?一切自成一体,小程序直接到云开发。

如果你仍然有自己的后端支撑体系,可以直接从云开发的云函数进行转接,整体效率会比使用传统登录方式高效得多。

由于云开发和微信之间做了链路上的打通,使得原本因为身份识别而构建的请求没有了实质上的意义。所以对于开发者而言,使用云开发就意味着不需要为打通微信生态做更多的开发投入。

对于微信而言,微信服务链路是直接对接到云开发的服务链路中,并不会和开发者资源直接接触,而云开发的计算服务资源并不会脱离微信的生态规范,所以开发者在云开发中做任何的转发服务都不会对微信本身服务链路造成威胁和损伤。

当然,云开发云原生的体验还不止于此,你将在本课程中感受云调用,开放数据免鉴权的魅力,真正走进云原生。

如果你只是一个前端开发者,不具备成型的后端支撑体系,云开发易于使用的后端服务会像调用API 一样简单,你将会进一步向全栈开发迈进。

不止于微信小程序

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

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

如果你觉得云开发的云函数、数据库、存储资源太分散,这种开发模式太超前,使用传统技术栈的后台服务的你,难以承担云函数改造成本。你可以用云开发的云托管服务快速迁移存量业务,同时支持东西向通信微服务和服务常驻。

云开发除了原生支持微信小程序,还原生支持更多平台和端应用,你可以通过访问这个链接,一键部署一个 WEB 版本的待办事项应用,直观感受在 WEB 中是如何做登录鉴权的原生支持的。

以前,我们做 WEB 应用的时候,总是在登录鉴权方面花费很大的心力,但是还是会出现各种各样,防不胜防的安全漏洞。云开发将登录鉴权能力以 SDK 的形式提供给开发者直接使用,你只需要专注于业务逻辑就可以了,而有关于登录安全和用户鉴别方面,云开发都做了最优解。

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

小结

今天这节课,我们认识了云开发是后端服务的角色,并进一步理解原生化云服务对应用开发带来的方便和高效。通过今天的学习我希望你能够掌握以下几点:

  • 了解云开发的基础能力以及可应用的场景;

  • 理解和掌握云开发如何进行原生的登录鉴权;

  • 了解其他端云开发的支持情况。

总的来说,学完今天的内容后,我更希望你通过深度理解微信小程序以及小程序·云开发,来向多端云开发体系进行探索和进步。也期待你可以在云开发多端支持和跨平台应用中有所理解和提升。

今天的作业就是参照微信官方文档,对云开发的能力进行初步学习,在之后的内容中,我将带你更深层次地学习云开发各项能力。


精选评论

微信小程序开发13 云开发:云原生一体化应用开发平台相关推荐

  1. 微信小程序蓝牙标签打印/标签云打印开放平台(2)

    微信小程序蓝牙标签打印/标签云打印开放云平台(下面简称"平台" www.herro.cn 技术服务TEL:15759216805),支持开发者通过API调用完成标签蓝牙打印或标签云 ...

  2. 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  3. 写在微信小程序上线之夜,我想对移动开发人员说别慌先玩玩AR压压惊!

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/54296650 本文出自[DylanAndroid的博客] 写在微信小程序上线之 ...

  4. 微信小程序蓝牙标签打印/标签云打印开放云平台(4)

    微信小程序蓝牙标签打印/标签云打印开放云平台(下面简称"平台" www.herro.cn 技术服务TEL:15759216805),支持开发者通过API调用完成标签蓝牙打印或标签云 ...

  5. 微信小程序:后台数据库与云数据库对比取最后一个值并且取用定时更新

    微信小程序:后台数据库与云数据库对比取最后一个值并且取用定时更新的方式来现在在前端网页上 我们有时候会遇到这样的问题,在后台数据库提取到数据后想要提取他们中的某些有共同特征的一些数据,这时候我们就可以 ...

  6. 微信小程序的后台在哪里云开发控制台操作方法

    前言 微信小程序很方便,给开发者提供了它自己的后台,接下来我们来熟悉一下微信小程序的云开发控制台吧. 1.后台在哪里? 点击"云开发"(如果没有云开发按钮,说明在创建这个微信小程序 ...

  7. 微信小程序获取openid【非云开发版】【第零期】

    说在前面 此方法需要自己有一台云服务器 用云开发应该能更快更高效的获取openid,但是我也想熟练下云服务器的使用,因为后续数据库等(若不使用云开发)也需要php+nginx部署到云服务器上 梳理下顺 ...

  8. 微信小程序学习(2)-云开发

    微信小程序-云开发 微信小程序学习(1) 微信小程序学习(2) 文章目录 微信小程序-云开发 初始化+云函数的坑 云函数使用 老陈段子 小程序云存储 小程序云数据库 初始化插入 简单查询 更新数据 删 ...

  9. 微信小程序入门5--查询湖畔云GPS定位信息

    本文内容较多,请耐心查阅. 本文分为四个部分进行介绍: 一.在百度地图开发平台申请AK 1. 注册账号 2.创建应用 3.获取密钥(AK) 二.下载API模块 三.获取湖畔云GPS定位经纬度信息 四. ...

  10. 微信小程序商城,关于基于云服务器的接口文件配置还有数据库配置

    这个周闲暇时间做了一个微信小程序商城,具体的代码会打包放我的git仓库,主要实现的前端页面有:登录界面,商品界面,商品详情界面,购物车购买界面,个人信息界面,订单界面.然后在本地用mysql建立了一个 ...

最新文章

  1. 前后端分离的接口规范是什么?
  2. HTML fieldset 标签 -- 表单分组
  3. 51nod 1412 AVL数的种类(DP
  4. wxml修改样式_微信小程序 动态绑定事件并实现事件修改样式
  5. 【51NOD - 1523】 非回文(dfs)
  6. Java多线程相关的几十个问题
  7. idea复制maven项目,source root为原项目的解决方法
  8. 软件测试—软件测试基础知识—用例模板
  9. Java 读取文件大写和格式化输出字串
  10. 消息中间件解决方案-JMS-ActiveMQ
  11. OFFICE技术讲座:中文标点符号有哪些
  12. 《统计学习方法》小结
  13. python处理出租车轨迹数据_基于出租车GPS轨迹数据的研究:出租车行程的数据分析...
  14. 修改pip下载存放和安装位置
  15. JNI入门与进阶,JNI调用外部非标准程序SO【一】
  16. GB28181学习之路——eXosip获取IP和端口
  17. 贺贺逆向坎坷路 之 Apk 反编译前期了解
  18. 全网最全AutoIt3基础教程及实战案例
  19. SQL Server研习录(20)——FLOOR()函数
  20. 如何防御ddos攻击?

热门文章

  1. websphere使用_使用WebSphere sMash为Google小工具提供动力
  2. 开发脚手架与自动化构建
  3. java编写机器人_用JAVA编写自己的机器人一起“厮杀”
  4. 变异系数在线计算机,数理统计在线计算器
  5. 利用深度学习辅助皮肤病诊断
  6. 抢答网页PHP,GitHub - zhaiwenjun/vie-to-answer: 用于小型多人的线下知识竞赛活动的在线抢答器...
  7. 侃一侃萨班斯法案之302条款
  8. SAP的萨班斯法案SOA解决方案
  9. fatal: detected dubious ownership in repository git报错解决
  10. SMART-DOC使用总结