Redian新闻
>
建设下一代 Web 开放技术——WebContainer

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

科技

基于 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


图来源地址(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 ,涉及到多页面管理、鉴权、内存分析等等。

Binding 细节

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

研发模式

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

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/PCChrome/90.0.4430.93
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/90.0.4430.93
AppleWebKit/537.36 (KHTML, like Gecko)
testStringIndexOfVM813,394,664 ops/sec807,470,265 ops/sec6,424,450 ops/sec
testStringMatch24,794,109 ops/sec19,488,381 ops/sec556,760 ops/sec
testRegExp38,638,752 ops/sec38,599,956 ops/sec761,215 ops/sec
testDOM/2,346,600 ops/sec14,307 ops/sec
MessageChannel通信702 ops/sec286 ops/sec101,536 ops/sec

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


业务落地



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




未来



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




关注「Alibaba F2E」微信公众号把握阿里巴巴前端新动向


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
第四范式陈雨强:企业智能决策的下一代技术「强化学习 + 环境学习」抛弃妻子儿女的“海不归”Hiring | Real Estate Senior Accountant / Accounting Manager芝大学长大三觉醒,顺利拿下RBC Summer Internship!Chinese Telecoms Block Incoming Int’l Calls, Texts to Fight Scam你可以错过Web3,但不要错过Web5中招后可不轻松,现在七天了还是阳性偷天换日 信仰的颠覆(二十八)恭喜【牛津】学员斩获2022招聘季NatWest Internship Offer!A Community Worker’s Account of Life on the COVID-19 Frontline对冲基金Point 72已开放金融类 2022 Internship!沙白胜雪待君来——White Sands National ParkWeb3是什么?资深Web3行业大佬Mark为大家解读锐捷400G数据中心产品荣获Interop Tokyo 2022大奖 下一代数据中心扛鼎之作受肯定!咨询公司BCG已开放咨询类2022 Events,仅限Final year学生参加!In a Beijing Gallery, a Quarantine Party of One恭喜【华威】学员成功拿下NatWest Internship Offer!疫情中的埃及行:(八/终)辉煌又沉重的金字塔从Web2弄潮至今,这位互联网先知再度抢占Web3高地重振PointNet++雄风!PointNeXt:通过改进的模型训练和缩放策略重新审视PointNet++精品投行Cowen已开放金融类2022 Internship!Grant Thornton已开放会计类2022 Full Time!上一个说“丼”不读jǐng的人,已经被我骂哭了[腕表] 期望能再次纵横四海—— Vacheron Constantin Overseas Dual Time 7900VGAU-α:尝鲜体验快好省的下一代Attention这才刚开始学Web3,Web5就已经来了精品投行Centerview Partners已开放 金融 2022 Internship!一代人有一代人的词典Web3没玩明白,Web5来了?! Jack Dorsey发布新概念,马斯克第一个表示支持值得收藏|2021年湾区二手房新版合同关键点解读——Wen的买房指南(五)八髎穴的功效观点丨许勤华:国际关系与全球文明生态建设——建设独立自主的中国国际关系理论加国五大行CIBC(US)金融、会计岗2022 Internship现已开放!工作笔记:The Synergy a Seller Could Provide a Buyer微众银行OSPO建设之路:如何通过OSPO的建设推动企业开源?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。