我们身边的技术日新月异。您或许听说过,WebAssembly(简称Wasm)正在开发者和技术爱好者中引发广泛关注。但WebAssembly究竟是什么?它为何如此重要,值得关注?下面一起来了解。
什么是WebAssembly?
从根本上说,WebAssembly是一种二进制指令集。它类似于您可能听说过的x86或ARM等汇编语言,但具备一些新的特性和安全保障。使用C或Rust等编程语言编写的代码可以编译为WebAssembly构件。Wasm最初是为Web而创建的,其主要吸引力在于能够以接近原生的速度在Web上运行高性能应用程序。不过,如今WebAssembly在浏览器之外也得到了广泛采用。
Wasm区别于其他编译目标的一大特点是可移植性。只要有相应的运行时,无论底层架构如何,WebAssembly代码都可以在任何平台上运行。这意味着开发者只需编写一次代码,就可以在各种环境中运行,包括Windows、macOS、Linux、移动操作系统、浏览器,甚至灯泡。
WebAssembly安全吗?
安全至关重要,在当今的数字世界中尤其如此。因此,WebAssembly在创建之初就将安全作为核心设计目标。我们不妨想想Web浏览器的工作方式。访问网页时,浏览器会下载并执行来源未知且不受信任的代码。仔细想想,这确实令人不安。浏览器的职责是保护您和您的设备免受恶意代码侵害,而WebAssembly也秉承了这一理念,并采用了以下机制:
- 沙箱隔离:这会将WebAssembly代码与宿主环境隔离,防止其访问未经授权的数据,也无法获取有关代码运行位置的任何信息。
- 默认拒绝访问:WebAssembly采用非常严格的默认拒绝安全策略,即未经明确许可,不得访问系统资源。即使是系统时间等简单资源也不例外,除非专门与Wasm代码共享,否则完全无法访问。
- 内存边界:每个运行中的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组件模型。它将凭借以下特性,从根本上改变开发者构建和组合软件的方式:
- 跨生态系统访问:想使用Go的加密库、Rust的JSON序列化程序和Python的数值计算工具?没问题。借助Component Model,您可以从几乎任何语言生态系统中选择软件,并将它们组合起来,就像这些软件都是用同一种语言编写的原生库一样。
- 开发灵活性:组织内的不同团队可以选择适合具体任务的工具。他们可以根据自身专长和项目要求选择编程语言和软件栈,并确信各团队的交付成果能够无缝集成到完整应用中。
简而言之,开发者可以使用任何能够生成WebAssembly代码的语言构建软件组件,然后轻松地将这些组件组合成一个应用。
WebAssembly是一项值得关注的技术。无论是希望为应用添加新功能的开发者,还是专注于构建可扩展且经济高效解决方案的企业,Wasm都可能适合您。随着技术不断成熟并获得更多支持,WebAssembly有望重新定义我们思考软件开发以及与之交互的方式。请持续关注WebAssembly,因为它不仅代表未来,也已经来到我们身边,正在重塑我们所熟悉的软件。
想进一步了解WebAssembly?欢迎在YouTube、Spotify或Apple Podcast上收听F5的WebAssembly Unleashed播客。
相关博客文章
2023年应用策略现状:成本与复杂性是推动多云网络发展的首要因素
多云网络解决方案可在核心、云和边缘环境之间实现无缝、安全的互联,为解决当今混合IT面临的挑战提供支持,因而备受业界关注。
