【.com快译】围绕WebAssembly的软件产业正在蓬勃发展。这项技术通常称为WASM,正在改变我们的代码在Web浏览器、边缘云和物联网设备等环境中的执行方式。本文重点介绍是什么让WASM如此特别,为什么您应该关心它,以及为什么我认为它将在未来几年推动新一代软件的发展。我将列出WebAssembly的三大支柱——安全性、可移植性和性能,并概述为什么这三大支柱使WASM成为一股不可忽视的力量。安全还不如从安全开始。如今,安全是许多人的头等大事,供应链问题、加密货币劫持和数据泄露的报告太常见了。WebAssembly从安全沙箱开始,以多种方式增强安全性。执行WASM后,代码无法访问任何东西,包括网络、文件系统或沙箱之外的任何其他东西。这被称为默认拒绝安全模式,它不是由Docker等容器技术实现的。对于在WASM沙箱中运行并与外界交互的代码,必须明确授予其访问主机功能的权限。Web浏览器可以向WASM模块授予某些功能,例如获取API和访问DOM。云环境等其他主机可以使用WASI(WebAssembly系统接口)授予模块访问文件系统、随机性(如/dev/urandom)和系统时间等常见对象的权限。这一切都保证了WASM模块中的代码只能访问它运行所需要的资源,而不能访问其他资源。为了应对猖獗的供应链攻击,还努力使WebAssembly模块的加密签名成为规范的标准部分。能够使用可信密钥签署模块并在系统尝试运行模块时验证该签名将是一个巨大的胜利,并有助于在使用WebAssembly构建应用程序时巩固“纵深防御”理念。随着软件供应商开始将他们的API库作为WASM模块分发,这将变得尤为重要;我们将能够充分利用跨语言模块链接(意味着以不同语言构建的模块可以共享内存和功能),同时还能够验证模块是否由供应商开发且未被篡改。可移植性链接模块的想法引出了第二个支柱:可移植性。我喜欢从两个方面考虑WASM的可移植性:语言可移植性和平台可移植性。语言可移植性是指用一种语言(如Rust)编写的模块在用另一种语言(如Go)编写的系统中运行的能力。由于WASM运行时环境可以嵌入到其他软件中,因此它们可用于引入专用组件,否则您的团队使用的主要语言无法实现这些组件。这个概念也可以应用到将多个用不同语言编写的WASM模块组合起来形成一个单一软件而构建的应用程序,例如Atmo框架。在平台可移植性方面,WebAssembly不依赖于任何硬件架构,因此无需重新编译即可在多个不同平台上执行。例如,这将允许您生成可以在物联网设备和云虚拟机上运行的单个WASM文件。执行WASM模块时,它会提前(AOT)或及时(JIT)编译为机器本机代码。WASM运行时环境(例如Chrome的V8、Wasmtime或Wasmer)会自动执行此编译,这使得运行任何模块都非常简单。例如,在流量激增导致模块遇到大量入站请求时,您的代码自动从中央云实例移动到边缘计算网络的情况下,这会变得很有用。性能最后一个支柱是性能。WebAssembly旨在以本机或接近本机的速度执行代码。影响任何应用程序性能的因素有很多,其中包括语言、硬件、垃圾回收和虚拟化等。使用WebAssembly,只需在运行时为每个平台优化自身,就可以以高性能的方式轻松执行代码。我们仍处于WebAssembly的早期阶段,但其性能已经可以媲美经过多年优化的V8JavaScript引擎。所有编译为WebAssembly的语言都将受益于WASM运行时环境带来的任何未来性能改进,这对每个人来说都是一大利好。我邀请您在构建软件时考虑您的开发平台的哪些方面对您最重要。我敢打赌,本文讨论的三个支柱中至少有两个是贵公司的关键因素,您可以通过采用WebAssembly等技术来改进代码的关键属性。希望WASM成为支持软件工作流的底层技术,开发者完全不需要担心,就像今天的大多数开发者并不关心他们使用的语言的编译器生成的汇编代码一样。主要区别在于WebAssembly从一开始就内置了这些出色的属性,可确保您的代码在默认情况下安全、可移植且高性能,这是当今的软件工具无法做到的。原标题:WebAssembly的三大支柱,作者:ConnorHicks
