17611538698
webmaster@21cto.com

从浏览器小子到后端大佬:WASM 会赢得Web战争吗?

编程语言 0 1030 2023-09-05 06:33:01

图片

导读:WebAssembly 得到了业界包括开发者的很多热捧,但它真的是一些人认为的游戏规则改变者吗?

从 1995 年开始,以及在此后的几十年里,JavaScript 是基于 Web 的脚本编写中唯一值得开发者一玩的游戏。虽然现在 JavaScript 的用途令人难以置信,但它也有其局限性,尤其是在性能密集型任务方面。

随着 Web 的发展,对 Web 应用程序的功能、速度和灵活性的需求也在不断增长。

于是,人们发明了 WebAssembly (WASM)。

认识到需要一种更有效的方式在 Web 浏览器中运行代码,万维网联盟 (W3C) 和主要浏览器供应商开始研究新的二进制格式。这种格式的目标是快速、高效和安全,让开发人员能够以接近本机的速度运行代码。因此,2015 年,WASM作为运行字节码的低级虚拟机被引入,字节码是从高级语言翻译而来的。

现在,WASM 本身并不是一种编程语言。相反,它是一种紧凑的二进制指令格式。与解释型的 JavaScript 不同,WASM 是一种低级字节码,在浏览器内的沙盒环境中运行,确保速度和安全性。

图片

开发人员喜欢它,因为他们可以用他们熟悉的语言编写代码,例如 C、C++ 或者 Rust。Web 开发人员也对此感到满意,因为他们不需要替换 JavaScript 程序。相反,他们可以从 JavaScript 调用 WASM 函数,反之亦然,从而实现两者之间的无缝集成。

最初,WASM 是一个纯粹的Web游戏。然后事情发生了变化。2019 年,Mozilla 推出了WebAssembly 系统接口(WASI)来访问操作系统资源。这使得 WebAssembly 彻底脱离了浏览器。

正如 WASM 专家兼 Fastly 工程总监 Lin Clark 所说,一旦脱离浏览器框架,WASM 就成为“一种在所有机器上运行相同代码的快速、可扩展、安全的方式”。

这听起来很熟悉吗?应该是,你也可以对容器使用相同的文字描述。 

Docker 联合创始人 Solomon Hykes当时在Twitter上所说:“如果 WASM+WASI 在 2008 年就存在,我们就不需要创建 Docker了。这就是WASM的重要性。服务器上的 WebAssembly 是计算的未来。标准化系统接口是缺失的环节。”

最近,云原生计算基金会 ( CNCF ) 生态系统负责人 Taylor Dolezal 表示:“WebAssembly 是未来,因为它越来越多地用于无服务器、容器化和插件技术,预计将显着影响 Web、无服务器、游戏和容器化应用程序。”

似乎言辞非常强烈。那么 WASM 真的是“计算的未来吗?”

就我个人而言,我对此持观望的态度。虽然 WASI 等程序和WasmEdge等竞争运行时使在边缘和后端运行 WASM 优化代码变得更加容易,但我发现仍有很多工作要做。我并不是唯一看到该问题的人。

正如 Enterprise Management Associates 分析师 Torsten Volk所说:“在可靠、高效地支持生产用例方面,还有很多工作要做。” 确切说,实情确是如此。 

例如,Python 已经成为人们使用机器学习程序最快速、简单的方式。这里要谢谢PyTorch。但我们不能简单地将这些程序在运行时放入 WASM 中并期望它们能够工作,问题是我们还需要许多第三方依赖项,但目前还没有。

如果 WASM 继续受欢迎,更多公司和开源团体将加入,努力构建这些具体细节。

但是,人们会说 – Kubernetes 不是未来了吗?嗯,是的,但正如 Adobe 最近指出的那样,WASM 和 Kubernetes 可以携手合作。他们找到了一种方法来制作“目前在 Kubernetes 中运行的完整微服务,并使其在 WASM 中运行”。

为什么?Adobe为他们提供了一个更轻量级的模型,几乎可以随着流量的增加而立即扩展,比粗粒度容器提供更多的调度灵活性,同时仍然使用 Kubernetes 来编排一切。有了这个,Adobe 可以“安全地实现高性能和效率,同时仍然与 Kubernetes 兼容。” 可以说这是两全其美的。

Adobe 比大多数公司拥有更多的资源来解决他们的问题。不过,展望未来,小型企业可能会更容易在后端使用 WASM。

这是因为WebAssembly 的组件模型(WACM) 和WASI-Preview 2。

前一个项目将逐步定义组件模型。这将为从 WASM 核心模块构建的单独编译的组件提供可移植、热加载和运行时高效的二进制格式,从而实现可移植、跨语言组合。它还将为可虚拟化、可静态分析、功能安全、与语言无关的接口提供更好的支持。

后者的技术是WASI的下一个版本。这将把 WASI 的 API 从 POSIX 扩展到 WASI 文件系统、HTTP、云和WebSocket。它还将为非 C 语言类提供更好的绑定支持。

综合所述,我认为 WASM 很可能最终会发挥其潜力。尽管如此,开发人员的想法和生产代码之间仍然存在许多差距。但构建实用 WASI 后端设计的砖块现在正在被烧制。

到 2025 年,开发者们将明确知道 WASM 是否会成为后端软件开发的未来。那么,我们该如何准备?

作者:场长

评论