让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
简介: mPaaS 小程序框架作为一款 App 通用框架,帮助开发者面向自身的 App 实现小程序投放。不止如此,小程序代码仅需撰写一次,便可多端投放至自有 App、支付宝、钉钉甚至其他小程序开放平台。

10.png

⚅ 点击观看《mPaaS 小程序新品发布会》回放 > >

随着小程序技术的愈发成熟,不同平台的优势和典型使用场景各有侧重,同时越来越多的开发者可以结合自身的业务特色,通过小程序作为业务载体,形成单一平台或多平台的协同关系。
而今天,小程序技术的开放,mPaaS 小程序框架作为一款 App 通用框架,帮助开发者面向自身的 App 实现小程序投放。不止如此,小程序代码仅需撰写一次,便可多端投放至自有 App、支付宝、钉钉甚至其他小程序开放平台。

本文将围绕支付宝在移动端架构的演进逐步展开,分享我们在“App 动态性”“提升研发效率”等方面所做的思考和具体实践。同时,针对 mPaaS 小程序能力的开放,也将展开介绍我们如何实现“小程序代码只写一次,多端投放”,而这将给开发者带来完全不同的开发体验。


支付宝 App 发展历程

首先让我们先回顾看看支付宝 App 在近几年的具体发展历程。

1.png

支付宝一开始仅仅只是一个单体应用的工具型 App,让用户可以在手机完成支付宝相关的业务查询和操作。2013 年后,支付宝逐步转型为平台型 App, 平台型 App 具有“服务化、模块化、工具组件化”的特点。这个时候支付宝的业务不仅仅是支付,还需要给客户提供很多生活相关的服务,例如余额宝、缴电费等。2015 年后支付宝成长为超级 App,此时支付宝里面需要支持大量复杂的业务。2018 年,随着小程序的推出,支付宝开始开放自己的商业能力,用自己流量助力合作伙伴,因此整个 App 面临开放、动态化、高可用的挑战,面对这些挑战,我们把它总结为以下三个方面:

1.动态性及体验
• 面对多样的需求,如何保证业务的快速迭代?
• 保证 App 动态更新的前提下,如何保障用户体验?

2.研发效率
• 如何做到代码一次编写,多端复用?
• 没有客户端开发经验,如何提升开发效率?

3.开放生态
• 如何将能力开放给更多开发者?
• 如何连接更多生态平台,丰富自身 App 场景?

有了问题,我们会通过技术手段,来解决这些问题,我们从上面的三个方向出发,来进行技术选型。

2.png

首先我们从业务开发成本角度来看:
• 原生作为最基础的开发模式,需要双端都进行开发,无疑成本是最高的;
• 其次是 ReactNative/Weex,即使是一次开发,同时运行在双端,但由于是 JS 转成 Native 组件渲染,实际运行起来仍然存在些许差异,导致开发者在写业务界面时,部分差异需要通过 Native 端定制开发来解决。整体而言,ReactNative/Weex 已帮助业务方大幅降低开发成本,但还是存在不小的端适配工作;
• 接下来是 Flutter,从业务开发的角度来说,Flutter 针对双端对齐真的下了大功夫。在大多数场景下,Android 端开发完毕之后能无缝跑在 iOS 端,当然这和它自研的引擎有关。只不过 Flutter 需基于 Dart 语言开发,因此对于开发者而言,部分老业务移植的工作量需考虑在内;
• 最后是 HTML5,带着成熟的语言,成熟的开发模式,双端几乎一样的表现等特性标明 HTML5 仍然是目前我们能落地的开发成本最低的方案。

接下来我们讨论用户体验
• 首先,原生的体验毋庸置疑是最好的;
• 其次是自有渲染引擎的 Flutter,无论是性能还是控件的展现形式,可以说是不亚于原生的体验;
• 接下来便是 ReactNative/Weex 方案,通过将前端代码渲染成本地 Natvie 控件。在早期版本中,由于部分控件优化不到位导致 App 卡顿,因此用户体验的表现不足;
• 最后是 HTML5,完全通过浏览器内核进行渲染,借助预置资源、内核优化等技术,HTML5 可以做到接近原生的体验,但总体性能仍有差异。

接着是动态性的支持:
• 首先,动态性最优的就是 HTML5 方案:可以访问在线页面,服务端即时生效,也可以通过下发资源的方式,进行动态更新;
• 其次是 ReactNative/Weex 方案,通过一定的定制,开发者可以将前端包热部署、热更新。不过相较于 HTML5 具备的“在线+离线”的动态性,该方案仍然存在一定差距;
• 接下来是 Flutter,虽然有很强大的热重载机制,不过由于 Google 的限制,正式版本 iOS 无法做到热更新,目前的话,可以通过修改引擎,修改JIT和AOT方式来做到iOS热更,或是采取运行时解析渲染来做到动态化,但相比于上面两个方案,在动态性上,flutter略差一些。
• 最后原生,Android/iOS 双端均可以通过一些黑科技手段,进行动态更新,不过由于 iOS 政策禁止,因此在动态性上,原生方案暂时不推荐;

分析完四种方案的不同的几个方向,那么 mPaaS 带来的答案是:
「兼顾动态性、体验、开发效率、开放性的 Hybrid 架构方案,即 mPaaS 小程序」。

mPaaS 小程序技术解析

什么是小程序呢?
根据 w3c 小程序白皮书对小程序的定义,小程序,是一种依赖 Web 技术,集成了原生能力的,新的移动应用程序格式。它具有获取「便捷、连接稳定、安全可靠、性能优异」这四个特点。

mPaaS 小程序,基于 Web 技术,学习成本低。
一套小程序代码,同时支持 iOS 和 Android,接近原生体验。
同时提供丰富的组件和 API,如获取用户信息、本地存储、支付功能等。

接下来我们来拆解小程序完整的技术架构,试着通过「运行阶段、开发阶段、发布阶段」将小程序整体的架构展开。

3.png

• 运行阶段
小程序采用双线程模式将页面渲染和业务逻辑分别放在两个单独的线程中,renderer 运行在 WebView 中,负责渲染界面;小程序业务逻辑运行在单独的 worker 线程,负责事件处理、API 调用和生命周期管理。两个线程之间通过postMessage 以及 onMessage 进行数据交换,数据可以从 worker 线程传递到 render 重新渲染界面,同时renderer也可以将事件传递给对应的 worker 处理。一个 worker 可以对应多个 renderer,方便页面间数据共享和交互。

对于渲染速度、交互响应要求高的场景,如地图,小程序将原生地图组件嵌入到 WebView 上,相比在 Canvas 上渲染地图,绘制速度和效率更高。

资源加载方面,小程序采用离线化方式加载,也就是说当打开小程序时,小程序离线包必须下载到本地,由于每个版本只下载一次,一方面节省了每次请求的资源开销,另一方面启动速度大大提升了。当有新的版本时,发布平台自动比对本地安装的版本和最新版本产生并下发差量包,客户端不需要下载整个包即可更新小程序至最新版。

• 开发与发布阶段
应用开发必然不能缺少完善工具链的支持,小程序 IDE 集合了编码、调试、预览以及发布等能力。客户端经过简单的适配,即可在真机应用中实时预览和调试小程序。

对小程序架构有了初步的了解之后,我们接下来看看 mPaaS 小程序将如何实现动态发布。这恰恰是 mPaaS 小程序核心的亮点,借助「包发布和管理」的能力,App 的研发与迭代效率得以深度优化。

4.png

如上图所示,我们重新定义了研发模式与发布流程,每个小程序都可以作为独立产品,有自己的发布流程,无需等待其他团队。各业务团队进行完全拆分,每个业务独立演进,独立发布。

在发布过程中,要遵守以下流程:
1.指标线性,定义每次发布的业务和性能指标;
2.智能灰度,内部灰度、外部灰度、指定灰度;
3.实时监控,修复循环;
4.线上运维修复手段技术兜底。

然后我们再聊下小程序的安全。
• 连接安全
基于阿里巴巴无线保镖能力,保障小程序请求安全,篡改后的请求无法通过校验。
• 包体安全
包体经过加密、加签,保障下载过程安全,篡改后的小程序包无法正常使用。
• 权限安全
完整的权限管理体系,针对不同小程序开放不同权限,保障用户的隐私安全。

接着我们看下小程序框架能力扩展体系。

mPaaS 小程序本身已集成近上百个常用的 API,包括网络、媒体、存储、定位、扫码、蓝牙等等,这些 API 同样可以完美的运行在支付宝中。不仅如此,应用开发者可以将自己特色的功能 mPaaS 小程序扩展能力透出给小程序开发者。这块扩展主要包括三个方面:
• 能力扩展:提供自定义事件能力,支持“小程序 -> 原生”,以及“原生 -> 小程序”
• 样式扩展:提供多种原生样式定制,包括导航栏,加载动画,启动动画等原生样式
• 组件扩展:提供自定义组件能力,扩展小程序标签

最后我们再聊聊小程序的多端投放与生态。

5.png

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

6.png

当然,对于自身 App 内业务场景相对匮乏的情况,基于 mPaaS 统一的小程序框架能力,阿里系的三方业务场景,能够实现无缝投放,从而满足开发者丰富自身业务场景的需求。

基于 mPaaS 小程序的移动端能力构建

上面介绍完了 mPaaS 小程序的技术架构以及能力,接下来我们聊下基于 mPaaS 小程序在具体研发向的思考。
• 移动中台能力建设

7.png

所谓移动中台能力建设,我们希望通过整合整个 App 架构:在基础层面,将通用的组件下沉,避免重复创造轮子,同时标准化服务接口,为更多的上层业务提供优质、稳定且标准的服务。
那么我们就需要从两个方面来处理这个事情。

  • 基础组件
    我们在开发过程中可能会存在这样一个问题,就是两个团队协作开发,可能大家有自己沉淀的一些经典组件,我们可以对这些组件进行沉淀,同时,还可以通过小程序的自定义组件能力,对小程序提供服务。
  • 核心能力服务化
    组件沉淀后,对于一些核心的业务能力,我们需要将这部分能力进行服务化,抽象出标准的服务接口or小程序API,供其他团队或是第三方生态调用。比如说支付宝的支付服务、芝麻信用服务等,都是依托于服务化,最终良好的为其他业务提供服务的。

移动前台建设

8.png

在我们完成移动中台能力建设之后,整体的能力就已经具备了,剩下的就是结合小程序框架,建设我们的移动前台能力。

  • 核心业务体验优化
    针对一些非常核心的业务逻辑,比如支付报的支付,以及一些对性能要求比较高的业务,比如首页,亦或是一些特殊交互的页面。通常我们是希望通过使用原生页面或是 flutter 等原生技术来实现页面。因为这些页面,通常不会有大改,所以对动态化能力要求不是很严格,同时原生又能满足这些页面多种多样用户体验的需求。
  • 复杂业务小程序化
    对一些复杂的二级业务,可能业务本身会频繁的进行迭代,那么对于原生 native 将会是灾难般的开发体验,这时候,我们需将这部分业务剥离出来,通过前端技术将业务改造成小程序,再通过发布服务将离线包发布到应用上。这样,就满足了我们业务复杂多变的场景。
  • 三方生态化
    我们不仅自身提供各种各样的服务,也需要引入第三方服务来服务更多的人群,传统的 H5 页面由于过于宽泛的前端标准,加上有一定的技术门槛,这里就不如规范、简单的小程序了。同时,在利用上面我们介绍的移动中台建设,对第三方小程序提供多种多样的自有中台能力,完成场景多样化。

围绕着小程序如何帮助我们改造自身的业务模块,并且逐步逐步形成动态化更新,相信大家有了更全面的认识。目前 mPaaS 小程序已开放免费试用,欢迎接入体验。在接入测试阶段,有任何答疑需求,也欢迎使用钉钉搜索“32843812”加群。

我和我的同事等待你的到来。

点击或扫码查看 「mPaaS 小程序」更多资讯 > >

qrcode_ (3).png

END

动态-logo.gif


公众号媒体导流矩阵.jpg

访问2020阿里巴巴双11技术全观专题页,了解更多关于2020双11的技术干货内容

目录
打赏
0
0
0
0
80
分享
相关文章
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
162 76
基于Transformer架构的时间序列数据去噪技术研究
本文介绍了一种基于Transformer架构的时间序列去噪模型。通过生成合成数据训练,模型在不同噪声条件下展现出强去噪能力。文章详细解析了Transformer的输入嵌入、位置编码、自注意力机制及前馈网络等关键组件,并分析实验结果与注意力权重分布。研究为特定任务的模型优化和专业去噪模型开发奠定了基础。
84 14
基于Transformer架构的时间序列数据去噪技术研究
数据中台架构与技术体系
本文介绍了数据中台的整体架构设计,涵盖数据采集、存储、计算、服务及治理等多个层面。在数据采集层,通过实时与离线方式整合多类型数据源;存储层采用分层策略,包括原始层、清洗层、服务层和归档层,满足不同访问频率需求;计算层提供批处理、流处理、交互式分析和AI计算能力,支持多样化业务场景。数据服务层封装数据为标准化API,实现灵活调用,同时强调数据治理与安全,确保元数据管理、质量监控、权限控制及加密措施到位,助力企业构建高效、合规的数据管理体系。
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
870 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
MCP与A2A协议比较:人工智能系统互联与协作的技术基础架构
本文深入解析了人工智能领域的两项关键基础设施协议:模型上下文协议(MCP)与代理对代理协议(A2A)。MCP由Anthropic开发,专注于标准化AI模型与外部工具和数据源的连接,降低系统集成复杂度;A2A由Google发布,旨在实现不同AI代理间的跨平台协作。两者虽有相似之处,但在设计目标与应用场景上互为补充。文章通过具体示例分析了两种协议的技术差异及适用场景,并探讨了其在企业工作流自动化、医疗信息系统和软件工程中的应用。最后,文章强调了整合MCP与A2A构建协同AI系统架构的重要性,为未来AI技术生态系统的演进提供了方向。
251 4
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
196 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
【一步步开发AI运动小程序】十九、运动识别中如何解析RGBA帧图片?
本文介绍了如何将相机抽取的RGBA帧图像解析为`.jpg`或`.png`格式,适用于体测、赛事等场景。首先讲解了RGBA图像结构,其为一维数组,每四个元素表示一个像素的颜色与透明度值。接着通过`uni.createOffscreenCanvas()`创建离屏画布以减少绘制干扰,并提供代码实现,将RGBA数据逐像素绘制到画布上生成图片。最后说明了为何不直接使用拍照API及图像转换的调用频率建议,强调应先暂存帧数据,运动结束后再进行转换和上传,以优化性能。
DeepSeek背后的技术基石:DeepSeekMoE基于专家混合系统的大规模语言模型架构
DeepSeekMoE是一种创新的大规模语言模型架构,融合了专家混合系统(MoE)、多头潜在注意力机制(MLA)和RMSNorm归一化。通过专家共享、动态路由和潜在变量缓存技术,DeepSeekMoE在保持性能的同时,将计算开销降低了40%,显著提升了训练和推理效率。该模型在语言建模、机器翻译和长文本处理等任务中表现出色,具备广泛的应用前景,特别是在计算资源受限的场景下。
663 29
DeepSeek背后的技术基石:DeepSeekMoE基于专家混合系统的大规模语言模型架构

相关产品

  • 移动开发平台 mPaaS
  • 推荐镜像

    更多
    AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等