当前位置:首页 > 微信/百度小程序开发

现行的微信小程序开发新模式

2020-06-29

现在即便 Wafer2 再次降低了小程序开发的门槛,但自小程序诞生以来,业界关注小程序前端的技术演进较多,前端开发效率大大提高,而开发者却一直面临着以下后端瓶颈:

第一,看似简单的用户界面背后有复杂的后台逻辑,需要调用各种微信平台的接口,开发难度大;

第二、人力成本,一个小程序开发团队至少前端、后端、运维的人力,同时涉及各人力的沟通协作;

第三、安全、性能优化等对于小团队来讲都是很高的门槛,并且由于微信社交传播的放大作用,很多小程序访问量会突然猛增,极容易导致服务崩溃。

为此,通过对 Wafer1 和 Wafer2 中的授权流程以及相关配置的不断优化,2018 年 9 月,小程序·云开发正式上线。

小程序·云开发是微信和腾讯云联合研发的原生 Serverless 云服务。一般来说, Serverless 包括了 Backend as a Service 和 Func as a Service,而云开发则结合微信提供的各种能力,实现了免登陆鉴权,以及无缝地调用微信开放的 API。通过简化复杂的后端和运维操作,让即便不具备一定后端知识的开发者,也能高效开发出一款高质量的小程序。

云开发系统主要分为三部分:终端层、接入层和资源层。

终端层:为开发者工具提供了完善的开发、测试和运营能力,可以满足大部分开发者的需求。而 HTTP API 则提供了小程序外访问云开发资源的能力,使用 HTTP API 开发者可在已有服务器上访问云资源,实现与云开发的互通;

接入层:云开发请求都经过微信后台,由微信来保障通信安全、提供身份鉴权;

资源层:由腾讯云来提供函数服务和后台服务,以及保障云资源数据安全。

如下图所示,可以看到云开发系统架构涉及到微信、腾讯云和开发者三方,但腾讯云在底层打通了微信自研网络和云网络,以及开发者在腾讯云上已有的服务,在这个基础上构建了一体化的云端网络,开发者可以方便的将云开发结合到已有的服务里。



为了保障云开发后台架构以及稳定性,云开发设计了容灾架构。小程序·云开发后台服务采用多 IDC 多园区部署,做到了跨园区的容灾,每个园区都冗余一定的服务能力,当某个园区发生故障时,请求会自动路由到另外的两个园区,由另外两个园区继续提供服务,不会对业务产生影响。

而在网络层面,微信对用户采取就近接入原则,提高了接入质量。在这个基础上,借助 newDNS 实现精细和实时的引导,通过识别用户客户端版本、网络环境等数据,下发 IP 列表,引导用户接入到最合适的接入点,进一步提高用户的接入质量。



在安全性方面,云开发通过全链路的票据系统来保障整个请求链路的安全。如下图所示,首先是用户请求从微信客户端到微信后台服务这部分,云开发请求借助了微信底层的私有协议 mmtls 和微信后台服务进行通信,当业务层数据加上 mmtls 后,即可做到防窃听、防篡改、防重放、防伪装等安全措施。

而当微信后台收到云开发请求后,会先校验用户的身份,并通过全程票据来保障数据的安全性。具体是如何保障的呢?用户登录后,后台会下发一个票据给客户端,客户端每次请求均会带上票据。在后台服务的整个处理链条中,所有对核心数据服务的访问,都会被校验票据是否合法,如若为非法请求则会被拒绝,以此保障用户隐私数据,只能通过用户的客户端发起的操作来进行访问。

由于云开放的整个链路都是经过鉴权的,云开发在执行云函数时,后台会自动校验请求票据,开发者可以无缝的使用微信的开放能力,无需再通过常规的 OAuth 授权并自行维护 AccessToken。而“小程序·云开发”对数据访问链路做的专门优化,也促使小程序更快的数据加载速度。



此外,对于小程序开发者普遍关心的性能问题,微信小程序团队相关负责人也在小程序·云开发技术峰会上进行了深入解读。以派迪科技为例,执行云函数需要经过创建容器、下载代码、部署执行三个部分。由于容器的启动是一个很费时的操作,所以通过函数实例复用、容器实例预创建,热点代码缓存等优化,将云函数容器的启动时间从秒级变成了毫秒级。而在容器冷启动的过程中,开发者可以做代码精简(缩短下载时间)、资源复用(缩短执行时间)、公共剥离(增加缓存效果)、保持活跃(避免资源回收)等工作。

同时,为了提高云函数的性能,云开发也在通信、业务和网络层做了一些优化。在通信层,改造私有协议,优化长连复用;在业务层,分不同段请求,优化内部调用链路;在网络层,压缩系统间网络开销,从纯异步的方式改造成多段同步的方式。

正因如此,自今年以来云函数请求性能已经提升了 60%。据了解,小程序端一次云函数的请求,在测试环境中也已降到 140 毫秒,其中的相关优化也将在下一个微信版本中进行发布。

免费获取报价

  • 29923329

  • 杭州市丰庆路498号北软智慧科创大厦203

  • 0571-85815193

  • pady@1t2.cn

网站地图 版权所有 © 2008-2021 杭州派迪科技有限公司  Copyright © 2008-2020  www.hzpady.com  All Rights Reserved    浙ICP备14029905号-1     公安备案:33010802008411    软著登字第3457658号