文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

编程语言WebAssembly发展的三大支柱

2024-12-02 23:07

关注

【51CTO.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的早期阶段,但它的性能已经可以与经过多年优化的V8 JavaScript引擎相媲美。所有可编译成WebAssembly的语言都将受益于将来为WASM运行时环境带来的任何性能改进,这对所有人来说都是一大利好。

我邀请您思考您在构建软件时,问问自己开发平台的哪些方面对您最重要。我敢打赌,本文讨论的三个支柱中至少有两个是贵公司的关键因素,您可以通过采用WebAssembly这种技术,改进代码的关键属性。但愿WASM会成为支持软件工作流程的底层技术,开发人员根本不需要操心它,就像今天大多数开发人员并不操心所用语言的编译器生成的汇编代码一样。

主要区别在于,WebAssembly一开始就内置了这些出色的属性,确保您的代码在默认情况下是安全的、可移植的和高性能的,而今天的软件工具做不到这点。

原文The Three Pillars of WebAssembly,作者:Connor Hicks

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯