您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

WebAssembly终极指南

时间:2023-05-06 11:19:18  来源:51CTO  作者:


WebAssembly(又名Wasm)已被证明在浏览器中运行得非常好。它被广泛用作提高速度和安全性的一种方式,尤其是直接在浏览器中运行的应用程序的计算简单性,特别是使用 JAVAScript 以及其他语言。这种速度和简单性最终要归功于它的二进制计算结构,它直接以非常干净的方式在 CPU 上运行。

然而,WebAssembly 最终将被广泛使用的场景,可能是作为一种在单个模块中跨不同容器和 Kube.NETes 集群、设备(例如边缘和物联网设备)和多云环境同时部署应用程序的方式。

WebAssembly 可以说初露峥嵘,不负众望。尽管它是还有待观察,但它最终能否成功在很大程度上取决于其作为一项技术的价值之外的因素。可能阻碍它的因素包括缺乏关于部署它的标准化设备的协议。

1、关键卖点

考虑到其低计算指令集大小,WebAssembly 提供的其他东西是它的超快速度和它的安全性——或者它的沙箱设计使用行业术语——因为在部署期间其他服务或应用程序无法访问,因为内部代码仍然存在隔离并且在以毫秒为单位的闪电般快速旅程中无法访问,以部署在不同的环境中。

WebAssembly 非常适合无服务器环境,被视为克服许多阻碍其采用的无服务器问题的一种方式。今天典型的第三方用例意味着无服务器将需要第三方的支持,而第三方通常是云供应商。对于许多人来说,无服务器架构可能等同于Amazon Web Services上的 Lambda 或来自其他云供应商(例如 Azure、google Cloud、 Oracle或 IBM)的产品。因此,在许多情况下,组织必须乐于将其多个基础架构委托给一个第三方云提供商,而不是多个供应商来管理其关键应用程序。仅出于这个原因,避免供应商锁定是 Wasm 的一个关键卖点。

Fermyon Technologies 联合创始人兼首席执行官 Matt Butcher 表示:“我们在 Fermyon 一直听到的一件事是,开发人员喜欢无服务器函数范式。” “不过,这句话几乎总是伴随着‘但是’:虽然每个大云都提供无服务器,但开发人员不喜欢这些产品附带的供应商锁定、性能和开发人员体验。”

Wasm 的一个基本特征是它如何让开发人员不再担心使用大量潜在的库来让他们的代码看到部署。“无论底层语言如何,WebAssembly 都提供了共享库的承诺。例如,一个 JavaScript 程序可以加载一个最初用 Python/ target=_blank class=infotextkey>Python 编写的库和另一个用 Rust 编写的库,并同时使用它们,”Butcher 说。“在当今的语言生态系统中,每种编程语言都有自己的YAML解析器、自己的 JPEG 库等等。用多种语言实现相同的算法会浪费多少小时、几天和几个月?WebAssembly 是补救措施。”

2、有望成为新标准

事实上,WebAssembly 有潜力成为编写应用程序的新标准,它由可以组合并塑造成许多不同应用程序的“真正通用的构建块”组成,Enterprise Management Associates (EMA) 的分析师 Torsten Volk, 说。对于开发人员来说,这是“无需担心让它在这些应用程序的运行时内运行的”完成的。这为开发人员生产力的大幅提升打开了大门,因为开发人员可以从甚至可以作为运行时的一部分提供的样板模块库中进行选择”Volk 说。“它们可以包含用于身份管理、访问控制、应用程序消息传递、数据存储和数据挖掘的微服务,也可以是整个数据管道、机器学习模型或 API 集成。开发人员将专注于编写业务代码,并且只编写业务代码,这种前景让 Wasm 如此令人兴奋。”

然而,就目前而言,WebAssembly 仍然是一项正在进行的工作。除其他外,它正在等待组件接口 Wasi 的标准化,该层需要确保部署 Wasm 应用程序的不同设备和服务器之间的端点兼容性。

3、到底做了什么?

这个想法是,WebAssembly 旨在部署以开发人员选择的语言编写的应用程序,以便在不同的环境中同时部署到任何地方。“完全不同”,因为 WebAssembly 在 CPU 上运行,只需要一个设备、服务器等,就能运行一个 CPU 指令集。这意味着 WebAssembly 模块中应用程序的单一部署理论上应该能够在多种不同的不同设备上运行和更新,无论是服务器、边缘设备、多云、无服务器环境等。

在任何有 CPU 能够运行指令集的地方,WebAssembly 旨在运行以越来越多的语言编写的应用程序,它可以托管在一个模块中。它现在支持 Python、JavaScript、C++、Rust 等。用不同编程语言编写的不同应用程序应该能够在单个模块中运行,尽管这种功能在很大程度上仍处于开发阶段。从本质上讲,一个微服务模块应该能够用于在多个不同的环境中部署多个服务,并在不重新配置端点的情况下提供应用程序更新。理论上,只需在模块中配置应用程序即可,一旦模块内部完成工作,就不必为部署模块的每个环境单独重新配置。

4、能取代容器吗?

WebAssembly 将取代容器和 Kubernetes 的论点在很大程度上是不合逻辑的。这是因为 WebAssembly 和容器以及 Kubernetes 是不同但重要的技术。即使有一些重叠的目的,它们也满足特定和独立的计算需求。

至少在不久的将来,许多组织将不愿意更换他们的容器基础设施和 Kubernetes 环境。除了可能会因为用 WebAssembly 替换它们而失去对它们的投资之外,WebAssembly 并不是一种适用于所有容器化环境的全部替换技术。事实上,最近人们非常关注使用 Wasm 在容器和 Kubernetes 环境中部署应用程序。

Docker 继续发布关于它将如何容纳和扩展对 WebAssembly 的支持的公告。经常讨论两者将如何协同工作,尤其是如何将 Docker 与容器一起使用以允许它们使用 WebAssembly 部署和管理应用程序。这些调整在很大程度上被认为是为 Wasm 的采用和与容器和 Kubernetes 一起使用铺平道路所必需的。

“凭借超音速启动速度和轻型运行时要求,Wasm 非常适合无服务器功能——这在历史上很难在 Docker 中很好地实现。相反,Docker 的突出特点是它能够以可移植的方式轻松捆绑长期运行的服务器及其环境,”Butcher 说。“长期运行的服务器还不是 Wasm 的强项。现在 Wasm 可以以与容器相同的图像格式打包,我们将看到这两种技术结合起来构建那种使用现有技术难以实现的混合无服务器和服务器微服务应用程序。”

5、比 JavaScript 快吗?

在广为人知的万维网诞生之初,出现了 JavaScript。自 1995 年Brendan Eich创建了支持 Netscape 的语言以来,JavaScript 就已经存在了,Netscape 是一种在当时具有革命性意义的网页浏览器,现在已不复存在但在美学上令人愉悦。从那时起,ECMAScript 标准就成为了 Web 开发的基础,代表了在 Web 浏览器中运行的绝大多数应用程序。

最近,WebAssembly——实际上已经存在了一段时间——出现了。继 2019 年万维网联盟(W3C)将其命名为网络标准后,它也因此成为继 htmlcss、JavaScript 之后的第四个网络标准。但是,虽然Web 浏览器应用程序 代表了 Wasm 的中心和历史用例,但重点是它被设计为可以在正确配置的 CPU 上的任何地方运行——这就是 Wasm 和 JavaScript 在某些用例中分叉并变得更加集成的地方。

Wasm 和 JavaScript 保持紧密联系,但 Wasm 除了 JavaScript 之外还有其他很多东西。简而言之,Wasm 帮助 JavaScript 在网络浏览器中更高效地运行的最初目的仍然是它们集成的关键组成部分。这种集成现在已经超越了 Web 浏览器,并扩展到边缘和服务器应用程序,而 JavaScript 本身并不是最适合的应用程序。

这是由于 Wasm 如何在 CPU 级别以二进制格式运行。别忘了,与 JavaScript 不同,Wasm 不是一种编程语言。Wasm 的主要优点之一是它的功能使其能够适应除 JavaScript 之外的多种不同语言,当然包括 Python、Rust以及 Go、.NET、C++、Java 和 php

所以,WebAssembly 既可以在需要的时候集成 JavaScript,当然也不限于集成 JavaScript。这种与 JavaScript 的集成和使用一直是 WebAssembly 和 JavaScript 共生的基石,尤其是在 Web 应用程序领域。

对于纯计算性能以及图像处理等任务,WebAssembly 无疑显示了其比 JavaScript 快得多的优点。但可以说,上下文要比这复杂得多。关于更快的计算时间是否同样重要,这并不是一个真正的问题,例如移动和 Web 应用程序的轻型编码任务需要 JavaScript 代码。

JavaScript 是一种几乎任何人都可以使用的语言,它提供了许多社区支持的库,这些库支持许多用例,而无需每次都重新发明轮子,Volk 指出。“将 JavaScript 和 Python 等依赖于解释器的语言作为字节码执行,并将样板代码与核心应用程序分开,可以带来巨大的性能和容量优势,”Volk 说。

6、会取代 JavaScript 吗?

重点不在于 WebAssembly 是否会取代 JavaScript,因为没有可预见的原因。相反,WebAssembly 将做的是扩展 JavaScript 的范围,使其更易于部署,而不仅仅是浏览器。

“我们在 Fermyon 看到的一切让我们感到惊讶。开发人员要求在 WebAssembly 中执行 JavaScript 和 TypeScript。我们从我们的社区听到的是,无服务器范式是他们喜欢的,而 JavaScript 只是他们在构建无服务器功能时希望拥有的多种语言之一,”Butcher 说。“所以,如果 Wasm 最初是 JavaScript 的补充,那么在某些方面这种关系已经倒转了。”

7、提供卓越的安全性?

与仅在 JavaScript 中部署的代码相比,Wasm 可以提供安全优势。当 Wasm 被用作可以部署 JavaScript 应用程序的“steroids编译器”时,Wasm 可以使 JavaScript 代码更加安全。例如,Wasm 将 JavaScript 与浏览器隔离开来,确保内存安全,并实现与 JavaScript 的动态类型变量相比更难利用的强类型变量。

“Wasm 的安全模型可以让庞大的 JavaScript 社区开始创建完整的应用程序,而不是只构建前端并依靠后端开发人员来完成其余的工作,”Volk 说。“将单个 Wasm 模块链接到基本应用程序中,为传统 JavaScript 前端带来活力的能力是一个令人兴奋的观点。想象一下,如果前端开发人员能够安全地在 MongoDB、Postgres 或 SalesForce API 上存储和访问数据,将会有怎样的可能性。”

事实上,Wasm 在许多方面都提供了安全优势。这是因为,正如网络资产管理和治理解决方案提供商 JupiterOne 的首席信息安全官Sounil Yu所说:

Wasm 作为 JavaScript 的编译器可以通过减少漏洞攻击面、提供更好的内存安全性、模糊代码、沙盒化执行环境和利用现有的安全生态系统来提高应用程序的安全性。Wasm 具有有限的指令集和更好的内存管理,这有助于减少漏洞的攻击面并防止一些常见类型的漏洞,例如缓冲区溢出。

Wasm 代码通过晦涩难懂的方式提供了一点安全性,因为它不是人类可读的,这使得攻击者更难对代码进行逆向工程,从而更难发现和利用漏洞。

Wasm 还可以在沙盒环境中运行,这有助于将代码与系统的其余部分隔离开来,以防止它访问敏感信息或执行非法操作。

Wasm 框架,如 CNCF 的wasmCloud,通过提供更高级别的抽象进一步扩展了 Wasm 安全足迹,减少了开发人员嵌入每个应用程序的代码量。wasmCloud 还可以更轻松地对工件进行签名、启用内置监控和自动化应用程序修补,从而减轻开发人员的安全负担。

但我们不能说 JavaScript 天生就是不安全的。事实上,Javascript“可以变得非常安全,”微软 Azure Core Upstream 的首席项目经理 Ralph Squillace 在一封电子邮件回复中说。“浏览器是地球上最受攻击的表面之一。然而,WebAssembly 通过数学上可证明的沙箱模型更容易进行深度防御,Veriwasm 等工具利用了这种模型,”他说。

“此外,您可以使用即将推出的组件模型来限制攻击面——例如,主机可能甚至不提供文件系统 API——在未来的世界中,这些类型的限制将被证明是至关重要的,”Squillace 说。“但不要被愚弄:主机仍然会犯配置错误并为模块提供过多的功率!”

原文链接:https://thenewstack.io/webassembly-the-ultimate-guide/



Tags:WebAssembly   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Rust 编译为WebAssembly 在前端项目中使用
前言最近,不是加大了对Rust相关文章的输出吗,在评论区或者私信区。有一些不同的声音说:“Rust没有前途,然后...."。其实呢,看一个技术是否有需要学习的动力。想必大家的底层理由...【详细内容】
2023-10-27  Search: WebAssembly  点击:(248)  评论:(0)  加入收藏
2023 年 WebAssembly 现状:第四种 Web 语言
2023 年度 WebAssembly 现状调查结果出炉,下面就来看看 2023 年的 WebAssembly 发展的怎么样了!WebAssembly 是一种可移植、低级别的字节码语言,旨在提供一种通用的编译目标,以...【详细内容】
2023-10-20  Search: WebAssembly  点击:(259)  评论:(0)  加入收藏
通过WebAssembly,C++率先打响虚拟 DOM 第一枪!
前言本文主要和大家讨论 asm-dom,即通过 WebAssembly 技术 C++ 率先支持虚拟DOM。在年初,我也确实使用 WebAssembly 将客户端应用成功移植到了 Web,这也是为什么我一直对 WebAs...【详细内容】
2023-08-22  Search: WebAssembly  点击:(284)  评论:(0)  加入收藏
WebAssembly 火了!背后的 LLVM 功不可没!
前面诸多文章中已经重点表达了自己对 WebAssembly 的浓厚兴趣,但是要深入学习 WebAssembly 就不得不说其背后的 LLVM ,这就是本文的主角。话不多说,直接开始!1.什么是LLVMLLVM,全...【详细内容】
2023-08-21  Search: WebAssembly  点击:(151)  评论:(0)  加入收藏
最流行的 WebAssembly 语言,会是 JavaScript 吗?
对于网络平台而言,WebAssembly 的出现无疑是意义重大的,它能让各种语言编写的代码以接近原生的速度在 Web 中运行——那么在各种语言中,Java 会是其中最流行的吗?原文...【详细内容】
2023-05-09  Search: WebAssembly  点击:(334)  评论:(0)  加入收藏
WebAssembly终极指南
WebAssembly(又名Wasm)已被证明在浏览器中运行得非常好。它被广泛用作提高速度和安全性的一种方式,尤其是直接在浏览器中运行的应用程序的计算简单性,特别是使用 JavaScript 以...【详细内容】
2023-05-06  Search: WebAssembly  点击:(258)  评论:(0)  加入收藏
人们在用 WebAssembly 构建什么应用?
WebAssembly (WASM) 在过去几年一直是一个流行词。 这是一项引起广泛关注但在实践中应用较少的技术。 我一直很好奇它的现状,所以我调查并总结了我的发现。 其中一些可能会让...【详细内容】
2023-01-07  Search: WebAssembly  点击:(320)  评论:(0)  加入收藏
WebAssembly 如何演进成为“浏览器第二编程语言”?
WebAssembly 无疑是近年来让人最为兴奋的新技术之一,它虽始于浏览器但已经开始不断地被各个语言及平台所集成。在实际的工业化落地中,区块链、边缘计算、游戏及图像视频等多...【详细内容】
2020-08-14  Search: WebAssembly  点击:(265)  评论:(0)  加入收藏
为什么每个人都在谈论 WebAssembly
了解有关在 Web 浏览器中运行任何代码的最新方法的更多信息。-- Mike Bursell(作者) 如果你还没有听说过 WebAssembly ,那么你很快就会知道。这是业界最保密的秘密之一,但它无...【详细内容】
2020-01-27  Search: WebAssembly  点击:(343)  评论:(0)  加入收藏
▌简易百科推荐
如何在Windows 10中查看电脑的名称?这里提供详细步骤
你想在有多台计算机组成的网络上查找你的计算机吗?一种方法是找到你的电脑名称,然后在网络上匹配该名称。下面是如何在Windows 10中使用图形和命令行方法查看你的计算机名称。...【详细内容】
2024-04-10  驾驭信息纵横科技    Tags:Windows 10   点击:(2)  评论:(0)  加入收藏
移动版 Outlook 解锁新技能,可验证登录 OneDrive 等微软服务
IT之家 4 月 9 日消息,微软公司近日发布新闻稿,宣布用户可以使用 Outlook 手机应用,轻松登录 Teams、OneDrive、Microsoft 365 以及 Windows 等微软账号服务。移动端 Outlook...【详细内容】
2024-04-09    IT之家  Tags:Outlook   点击:(0)  评论:(0)  加入收藏
Win10/Win11和 macOS用户反馈:谷歌云服务“捆绑”系统 DNS 设置
IT之家 4 月 6 日消息,谷歌公司承认旗下的 Google One 订阅服务中存在问题,在 Windows 10、Windows 11 以及 macOS 系统上会更改系统 DNS 设置,变更为 8.8.8.8 地址。Google On...【详细内容】
2024-04-08    IT之家  Tags:Win10   点击:(7)  评论:(0)  加入收藏
电脑卡顿怎么重装系统,快看这篇
电脑卡顿时,重装系统确实是一种可能的解决方案。以下是重装系统的详细步骤:备份重要数据:首先,你需要将电脑中的重要文件和数据备份到外部存储设备(如U盘、移动硬盘或云存储)中,以...【详细内容】
2024-04-04  科技数码前锋    Tags:重装系统   点击:(2)  评论:(0)  加入收藏
如何检查电脑的最近历史记录?这里提供详细步骤
如果你怀疑有人在使用你的计算机,并且你想查看他们在做什么,下面是如何查看是否有访问内容的痕迹。如何检查我的计算机的最近历史记录要检查计算机的最近历史记录,应该从web浏...【详细内容】
2024-03-30  驾驭信息纵横科技    Tags:历史记录   点击:(0)  评论:(0)  加入收藏
关于Windows中AppData的相关知识,看这篇文章就可以了
如果AppData文件夹占用了你电脑上的太多空间,则需要清理AppData文件夹。下面是一些帮助你在Windows计算机上进行AppData清理的方法。什么是AppData文件夹AppData文件夹是保存...【详细内容】
2024-03-30  驾驭信息纵横科技    Tags:AppData   点击:(2)  评论:(0)  加入收藏
微软 Edge 浏览器将迎来“内存限制器”功能,用户可自主控制 Edge 内存占用
IT之家 3 月 28 日消息,微软即将为其 Edge 浏览器带来一项实用新功能,据悉该公司正在测试一项内置的内存限制器,这项功能可以让用户限制 Edge 所占用的内存,防止浏览器超出内存...【详细内容】
2024-03-29    IT之家  Tags:Edge   点击:(14)  评论:(0)  加入收藏
一寸照片的大小如何压缩?四个实测效果很好的方法
一寸照片作为生活中常见的尺寸之一,常用于各类证件照与证明文件的制作。然而,受限于其较为狭小的尺寸,上传及打印过程中很容易出现尺寸超限的情况。所以,这个时候就需要对其体积...【详细内容】
2024-03-18  宠物小阿涛    Tags:压缩   点击:(14)  评论:(0)  加入收藏
手机投屏到电脑/电视的方法
方法一:Win10自带的投影功能1、将手机和电脑连接同一个无线网络。2、选择【开始】>【设置】>【系统】>【投影到此电脑】3、将默认的始终关闭的选项更改为所有位置都可用。4、...【详细内容】
2024-03-18    老吴讲I  Tags:投屏   点击:(16)  评论:(0)  加入收藏
微软商店怎么卸载应用 一分钟快速看懂!
微软商店怎么卸载应用 一分钟快速看懂!微软公司(Microsoft Corporation)是一家全球领先的科技企业,总部位于美国华盛顿州的雷德蒙德。成立于1975年,由比尔·盖茨和保罗&mid...【详细内容】
2024-02-27  婷婷说体育    Tags:微软商店   点击:(36)  评论:(0)  加入收藏
站内最新
站内热门
站内头条