WebAssembly在浏览器之外是否可行?

F5生态系统 | 2024年11月26日

简而言之,是的。

WebAssembly(Wasm)已成为一项广受采用的技术,迅速席卷Web开发领域。从早期的技术演示,例如热门游戏Doom完全在浏览器中运行,到Photoshop等大型传统应用在普通网页中提供完整的桌面级体验,WebAssembly让全球每台个人计算机上都已安装的熟悉程序能够带来全新的体验。

Wasm的设计目标是让几乎所有编程语言都能支持它,而不受用户计算机处理器类型的限制。它还具备多项有利的安全特性,浏览器可利用这些特性防止未经授权访问用户数据或系统资源。事实证明,这些特性在浏览器之外也非常实用,尤其适合需要隔离运行代码或实现代码高度可移植性的场景。

Unix 上的 POSIX 发展历程

默认情况下,WebAssembly无法访问其运行所在系统的任何资源。它所做的只是对0和1进行纯粹运算,因此Wasm主要用于视频解码或图像处理等计算密集型任务,而不是开发完整的应用。让WebAssembly沙箱访问外部功能相对容易,例如获取当前时间信息或读取文件中存储的数据,但具体使用哪些API通常因应用而异。

Unix系统也曾遇到与WebAssembly在浏览器之外运行时类似的情况。许多应用都需要访问网络和文件系统等常见系统资源,但每种操作系统的访问方式略有不同。因此,POSIX应运而生,成为一种标准的可移植操作系统接口。所有类Unix系统都可以采用该接口,统一程序与操作系统的交互方式。这也让为一种类Unix系统设计的程序能够轻松移植到另一种类Unix系统上运行。

WASI:WebAssembly系统接口应运而生

为了让WebAssembly程序以标准方式与操作系统交互,WebAssembly系统接口WASI应运而生。WASI在很大程度上受到CloudABI项目的启发,而CloudABI又受到POSIX的启发。这为WebAssembly在浏览器之外发挥优势带来了广阔机遇:用户既能利用WebAssembly的安全和沙箱特性,又能通过精心设计的API访问常用系统资源,同时基本保留沙箱隔离能力。由此自然会让人想到一种类似的技术:容器。谈到这个话题,就不能不提Docker联合创始人Solomon Hykes发布的一篇广为流传、见解深刻的WASI相关文章:

Solomon Hykes 的推文

这番话可谓掷地有声。WebAssembly提供了一种可移植的代码打包方式,使代码能够以接近原生的速度在任何平台上安全运行。与容器相比,它还有一个优势:完全不需要操作系统。开发者构建的大多数容器都包含某种Linux操作系统,供程序在其中运行,因此容器大小通常达到数百MB甚至数GB。WebAssembly二进制文件则是纯代码,大小通常只有数KB或个位数MB。设想开发者不再随处部署容器,而是改为部署WebAssembly,似乎有些不可思议,但这一设想已逐渐成为现实。目前已有多个项目正在积极开发,旨在让Wasm能够在Kubernetes上运行。

生产环境中的服务器端WebAssembly

已有多家公司从生产环境中的服务器端Wasm中受益。Cloudflare和Fastly都拥有庞大的边缘计算网络,让客户能够在全球部署代码,并尽可能靠近用户。两家公司都从战略层面选择了WebAssembly,以获得体积小、可移植性极强、启动速度快且具备可靠多租户能力的二进制文件。新兴公司Cosmonic采用巧妙的网络技术,让WebAssembly组件无论运行在何处都能无缝通信,无论是在掌上大小的微型设备中,还是在地球另一端的计算机上。另一家新兴公司Fermyon则利用WebAssembly大幅提高服务器工作负载密度,从而显著降低服务器成本,并推动更环保的计算。

浏览器之外的发展

总而言之,WebAssembly虽然最初是为浏览器内计算而开发的,但在浏览器之外也持续展现出很高的可行性。其设计支持多种编程语言并注重安全性,因此非常适合用于隔离运行代码和实现可移植性。WASI的引入推动了服务器端WebAssembly的蓬勃发展,使组织能够利用Wasm提供更好的产品,同时显著提高成本效益。WebAssembly在浏览器之外的潜力已不再只是构想,而是正在成为行业现实。

如需了解更多信息,请参阅我们之前发布的博客文章《为什么应该关注 WebAssembly》。

此外,还可观看或收听我们的“WebAssembly Unleashed”播客。

分享

相关博客文章

SOAS 2025:目标不一致,结果难出色
F5生态系统 | 2025/05/13

SOAS 2025:目标不一致,结果难出色

AI部署缺乏协调会导致效率低下。了解如何协调安全、自动化和部署策略,充分释放AI潜力。

AI应用的应用交付与安全:驾驭现代AI架构
F5生态系统 | 2024/08/22

AI应用的应用交付与安全:驾驭现代AI架构

了解生成式AI应用和API安全如何塑造现代应用交付与安全。

借助多云网络简化超级云
F5生态系统 | 2023/09/13

借助多云网络简化超级云

超级云不只是一个流行词。它代表着一种简化愿景,以多云网络为起点,支持跨云提供商的混合IT。

2023年应用策略现状:成本与复杂性是推动多云网络发展的首要因素
F5生态系统 | 2023/03/15

2023年应用策略现状:成本与复杂性是推动多云网络发展的首要因素

多云网络解决方案可在核心、云和边缘环境之间实现无缝、安全的互联,为解决当今混合IT面临的挑战提供支持,因而备受业界关注。

运营演进的必要性
F5生态系统 | 2022/01/11

运营演进的必要性

在数字化成为默认模式的世界中,运维仍然过度依赖人工方式,需要不断演进,才能支持自适应应用。这一演进要求整个IT体系进行重大变革,并具备由AI赋能的自适应能力,以保持可用性、优化性能并保障安全。

多云并非简单使用多个云:让跨云衔接更轻松
F5生态系统 | 2021/10/07

多云并非简单使用多个云:让跨云衔接更轻松

随着企业转向互联云战略,工作负载的管理和保护变得日益复杂。了解F5如何满足市场对多云网络新方法的需求。