为什么应该关注WebAssembly

F5生态系统 | 2024年10月02日

我们身边的技术日新月异。您或许听说过,WebAssembly(简称Wasm)正在开发者和技术爱好者中引发广泛关注。但WebAssembly究竟是什么?它为何如此重要,值得关注?下面一起来了解。

什么是WebAssembly?

从根本上说,WebAssembly是一种二进制指令集。它类似于您可能听说过的x86或ARM等汇编语言,但具备一些新的特性和安全保障。使用C或Rust等编程语言编写的代码可以编译为WebAssembly构件。Wasm最初是为Web而创建的,其主要吸引力在于能够以接近原生的速度在Web上运行高性能应用程序。不过,如今WebAssembly在浏览器之外也得到了广泛采用。

Wasm区别于其他编译目标的一大特点是可移植性。只要有相应的运行时,无论底层架构如何,WebAssembly代码都可以在任何平台上运行。这意味着开发者只需编写一次代码,就可以在各种环境中运行,包括Windows、macOS、Linux、移动操作系统、浏览器,甚至灯泡。

WebAssembly安全吗?

安全至关重要,在当今的数字世界中尤其如此。因此,WebAssembly在创建之初就将安全作为核心设计目标。我们不妨想想Web浏览器的工作方式。访问网页时,浏览器会下载并执行来源未知且不受信任的代码。仔细想想,这确实令人不安。浏览器的职责是保护您和您的设备免受恶意代码侵害,而WebAssembly也秉承了这一理念,并采用了以下机制:

  1. 沙箱隔离:这会将WebAssembly代码与宿主环境隔离,防止其访问未经授权的数据,也无法获取有关代码运行位置的任何信息。
  2. 默认拒绝访问:WebAssembly采用非常严格的默认拒绝安全策略,即未经明确许可,不得访问系统资源。即使是系统时间等简单资源也不例外,除非专门与Wasm代码共享,否则完全无法访问。
  3. 内存边界:每个运行中的WebAssembly实例都有一块独立内存,无法访问该内存范围之外的内容,并与其他WebAssembly实例及主机内存完全隔离。

WebAssembly 速度快吗?

WebAssembly在设计之初就注重速度。与JavaScript相比,Wasm代码可以在JavaScript代码开始解析之前完成解码并开始执行。它不仅能在浏览器中带来全新体验,还凭借可移植性和安全保障,在浏览器之外提供接近原生的性能。

为什么值得关注?

这绝不是要取代JavaScript。两者是互补技术,设计初衷是协同工作,而非相互竞争。Web应用的动态和交互部分仍然离不开JavaScript,而Wasm则更多用于计算密集型任务。

由于WebAssembly代码在运行时环境中执行,因此可以轻松将其集成到现有应用中,无论是Web应用,还是在边缘或服务器上运行的应用。这样,您就可以使用几乎任何语言编写的代码,甚至来自第三方的不受信任代码来扩展应用。WebAssembly非常适合插件系统,因为它可以让您在应用中安全运行社区成员或客户提供的代码。这一切都得益于WebAssembly出色的安全模型。

WebAssembly 高效运行

WebAssembly在无服务器计算领域引起了广泛关注。与容器相比,Wasm模块非常小,大多数生成的模块只有几KB或不到10 MB,而容器很容易达到数百MB甚至数GB。除了存储空间更小,Wasm还解决了广为人知的“冷启动”问题。Wasm代码可在几微秒内开始执行,因此无需让代码持续运行,也能快速响应请求。收到请求时,可以启动一个Wasm实例,对延迟的影响很小。这意味着基于WebAssembly的系统可在没有流量时缩容至零,既有利于环境,也能节省成本。

WebAssembly 可组合

在我看来,真正带来变革的是WebAssembly组件模型。它将凭借以下特性,从根本上改变开发者构建和组合软件的方式:

  1. 跨生态系统访问:想使用Go的加密库、Rust的JSON序列化程序和Python的数值计算工具?没问题。借助Component Model,您可以从几乎任何语言生态系统中选择软件,并将它们组合起来,就像这些软件都是用同一种语言编写的原生库一样。
  2. 开发灵活性:组织内的不同团队可以选择适合具体任务的工具。他们可以根据自身专长和项目要求选择编程语言和软件栈,并确信各团队的交付成果能够无缝集成到完整应用中。

简而言之,开发者可以使用任何能够生成WebAssembly代码的语言构建软件组件,然后轻松地将这些组件组合成一个应用。

WebAssembly是一项值得关注的技术。无论是希望为应用添加新功能的开发者,还是专注于构建可扩展且经济高效解决方案的企业,Wasm都可能适合您。随着技术不断成熟并获得更多支持,WebAssembly有望重新定义我们思考软件开发以及与之交互的方式。请持续关注WebAssembly,因为它不仅代表未来,也已经来到我们身边,正在重塑我们所熟悉的软件。

想进一步了解WebAssembly?欢迎在YouTube、Spotify或Apple Podcast上收听F5的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如何满足市场对多云网络新方法的需求。