建设下一代 Web 开放技术——WebContainer

简介: 建设下一代 Web 开放技术——WebContainer


图片.png

图片.png

基于 Webassembly + QuickJS 的 Web 安全沙箱技术方案,面向 Web 端建设下一代开放技术


背景


Web 端侧的开放技术长期以来一直在寻找最好的解决方案,从早期基于 Webview + API管控 的开放形式 ,到目前基于小程序的重容器的架构方案。或多或少都无法全面的解决开发者体验的问题,API 开放形式无法做到安全管控,小程序开放形式的架构必然会给业务带来孤岛效应。如何给开发者带来更好的研发体验、给商家带来更好的产品体验一直是我们淘宝开放技术前端团队的命题。

经过半年的技术演进和业务落地,我们自研了一套基于 Webassembly + QuickJS 的架构方案,来解决上述的问题。


目标


三年的小程序形式开放基础已经形成了规模化壁垒,落地新的技术方案必然考虑到成本问题,所以本次架构升级的目标可以描述为 “面向 Web 端建设下一代 PC 开放技术,建设基于 W3C 标准的 Web 技术三方开放方案,与小程序、小部件开放形态互补,构建电商域的完整开放技术生态”。


思考


端侧开放到底解决什么问题,我理解开放技术在端侧主要围绕这2个点:1. 如何让外部代码安全的可控的执行;2. 用户数据的安全如何保障,做到无端不透;

  1. 关于第一个点落实到细节是 JavaScript/CSS/HTML 如何执行的问题。我的解法是:JavaScript 运行在 Webassembly+QuickJS 安全容器里,基于 Webassembly 的安全水位保障 JS 执行的隔离和可控;CSS 基于 Shadow DOM + iframe 做到样式隔离。
    2. 数据安全主要依托浏览器容器环境对数据做加签验签加密操作,本文章不展开讲解;


技术细节


工欲其事必先利器,我们先对技术底层细节做一个了解

WebAssembly

图片.png

图来源地址https://medium.com/jspoint/the-anatomy-of-webassembly-writing-your-first-webassembly-module-using-c-c-d9ee18f7ac9b

这里重点提到2个事情:

  1. WebAssembly 二进制码会经过 Liftoff 生成未优化的 ByteCode,再给到 TurboFan 优化代码编译为机器码
  2. WebAssembly 和 JavaScript 的编译后端是共享的,WebAssembly 的尽头是和架构相关的机器码,这里是一个关键点也是 VM 和 HOST 同步调用的关键点。


WebContainer 架构

本质上我们会以 App 级别的思想来架构方案(多页面、路由、通信),底层运行时基于 QuickJS ,涉及到多页面管理、鉴权、内存分析等等。

图片.png


Binding 细节

外部代码的 Runtime 会运行到 Quickjs 里,执行环境需要仿真和浏览器环境一致,这个时候涉及到 API Binding设计,在 HOST JavaScript Runtime 定义 W3C 规范,通过 WebAssembly 的内存 Binding 到 Quickjs Runtime 中,当外部代码调用对应方法时,会映射到 HOST 实现,通过安全管控策略再执行到 HOST 环境中。

图片.png


研发模式

WebContainer 的本质要解决开发者体验问题,做到上层框架无关,所以在安全的水位上我们不会约束今天开发者的框架体系。但是我们需要定义 App Export 的接口。

图片.png


Benchmark

系统 L-PC1328H5-1417 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz   1.80 GHz Qianniu/9.05.02N
平台/Case 类型 PC 小程序 (V8)(JIT) PC 小程序 localwebview (Webkit)(JIT) WebContainer (AOT)
内核信息 类型 AliApp(QN/9.5.2) Ariver/1.0.0.5 Platform/PC Chrome/90.0.4430.93
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/90.0.4430.93
AppleWebKit/537.36 (KHTML, like Gecko)
testStringIndexOf VM 813,394,664 ops/sec 807,470,265 ops/sec 6,424,450 ops/sec
testStringMatch 24,794,109 ops/sec 19,488,381 ops/sec 556,760 ops/sec
testRegExp 38,638,752 ops/sec 38,599,956 ops/sec 761,215 ops/sec
testDOM / 2,346,600 ops/sec 14,307 ops/sec
MessageChannel 通信 702 ops/sec 286 ops/sec 101,536 ops/sec


相对于纯小程序的通信效率提升355倍,但是受到安全容器的限制 JS 执行相对于底层 V8 引擎降低到 1%,但是也是足够用于生产环境的。


业务落地



在商家私域场景,我们已经在旺铺装修表单落地,目前ISV反馈非常不错,业务平台未来会全量替换到新开放容器中。

图片.png



未来



继续基于 WebContainer 能力做上层开放体系的建设,解决插件体系。解决启动耗时的问题。技术底层完善 Quickjs Debug 能力。

相关文章
|
11天前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
140 1
|
3月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。该方案设计目标是实现通用性,适用于各种网络架构和业务场景。
94 1
|
4月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
128 7
|
11月前
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
444 1
|
10月前
|
人工智能 安全 物联网
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
|
10月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
208 6
|
10月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
225 3
|
11月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
731 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
10月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
318 1
|
10月前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
340 2