观点评论|让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析( 二 )


分析完四种方案的不同的几个方向 , 那么 mPaaS 带来的答案是:
「兼顾动态性、体验、开发效率、开放性的 Hybrid 架构方案 , 即 mPaaS 小程序」 。
mPaaS 小程序技术解析 什么是小程序呢?
根据 w3c 小程序白皮书对小程序的定义 , 小程序 , 是一种依赖 Web 技术 , 集成了原生能力的 , 新的移动应用程序格式 。 它具有获取「便捷、连接稳定、安全可靠、性能优异」这四个特点 。
mPaaS 小程序 , 基于 Web 技术 , 学习成本低 。
一套小程序代码 , 同时支持 iOS 和 Android , 接近原生体验 。
同时提供丰富的组件和 API , 如获取用户信息、本地存储、支付功能等 。
接下来我们来拆解小程序完整的技术架构 , 试着通过「运行阶段、开发阶段、发布阶段」将小程序整体的架构展开 。
观点评论|让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析
文章图片

? 运行阶段
小程序采用双线程模式将页面渲染和业务逻辑分别放在两个单独的线程中 , renderer 运行在 WebView 中 , 负责渲染界面;小程序业务逻辑运行在单独的 worker 线程 , 负责事件处理、API 调用和生命周期管理 。 两个线程之间通过postMessage 以及 onMessage 进行数据交换 , 数据可以从 worker 线程传递到 render 重新渲染界面 , 同时renderer也可以将事件传递给对应的 worker 处理 。 一个 worker 可以对应多个 renderer , 方便页面间数据共享和交互 。
对于渲染速度、交互响应要求高的场景 , 如地图 , 小程序将原生地图组件嵌入到 WebView 上 , 相比在 Canvas 上渲染地图 , 绘制速度和效率更高 。
资源加载方面 , 小程序采用离线化方式加载 , 也就是说当打开小程序时 , 小程序离线包必须下载到本地 , 由于每个版本只下载一次 , 一方面节省了每次请求的资源开销 , 另一方面启动速度大大提升了 。 当有新的版本时 , 发布平台自动比对本地安装的版本和最新版本产生并下发差量包 , 客户端不需要下载整个包即可更新小程序至最新版 。
? 开发与发布阶段
应用开发必然不能缺少完善工具链的支持 , 小程序 IDE 集合了编码、调试、预览以及发布等能力 。 客户端经过简单的适配 , 即可在真机应用中实时预览和调试小程序 。
对小程序架构有了初步的了解之后 , 我们接下来看看 mPaaS 小程序将如何实现动态发布 。 这恰恰是 mPaaS 小程序核心的亮点 , 借助「包发布和管理」的能力 , App 的研发与迭代效率得以深度优化 。
观点评论|让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析
文章图片

如上图所示 , 我们重新定义了研发模式与发布流程 , 每个小程序都可以作为独立产品 , 有自己的发布流程 , 无需等待其他团队 。 各业务团队进行完全拆分 , 每个业务独立演进 , 独立发布 。
在发布过程中 , 要遵守以下流程:
1.指标线性 , 定义每次发布的业务和性能指标;
2.智能灰度 , 内部灰度、外部灰度、指定灰度;
3.实时监控 , 修复循环;
4.线上运维修复手段技术兜底 。
然后我们再聊下小程序的安全 。
? 连接安全
基于阿里巴巴无线保镖能力 , 保障小程序请求安全 , 篡改后的请求无法通过校验 。
? 包体安全
包体经过加密、加签 , 保障下载过程安全 , 篡改后的小程序包无法正常使用 。
? 权限安全
完整的权限管理体系 , 针对不同小程序开放不同权限 , 保障用户的隐私安全 。
接着我们看下小程序框架能力扩展体系 。
mPaaS 小程序本身已集成近上百个常用的 API , 包括网络、媒体、存储、定位、扫码、蓝牙等等 , 这些 API 同样可以完美的运行在支付宝中 。 不仅如此 , 应用开发者可以将自己特色的功能 mPaaS 小程序扩展能力透出给小程序开发者 。 这块扩展主要包括三个方面:
? 能力扩展:提供自定义事件能力 , 支持“小程序 -> 原生” , 以及“原生 -> 小程序”
? 样式扩展:提供多种原生样式定制 , 包括导航栏 , 加载动画 , 启动动画等原生样式
? 组件扩展:提供自定义组件能力 , 扩展小程序标签
最后我们再聊聊小程序的多端投放与生态 。
观点评论|让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析
文章图片

基于 mPaaS 小程序体系 , 我们可以将非常多的小程序标准 , 通过工具转化成标准小程序产物 , 例如开发者自己写的 mPaaS 小程序 , 抑或是 mPaaS 小程序市场的小程序 , 或者支付宝 or 其他三方小程序 。 通过 IDE 转化完成后 , 我们可以通过两种渠道 , 投放到不同的端上 。 使用 mPaaS 发布平台 , 即可投放到自有 App 中 , 使用其他三方开放平台 , 即可投放到对应的端上 , 一次开发 , 仅需少量适配 , 即可多端投放 。
观点评论|让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析


推荐阅读