自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編程語言WebAssembly發(fā)展的三大支柱

譯文
開發(fā) 后端
圍繞WebAssembly的軟件行業(yè)正大行其道。這項(xiàng)技術(shù)通常名為WASM,正在改變我們的代碼在Web瀏覽器、邊緣云和物聯(lián)網(wǎng)設(shè)備等環(huán)境中的執(zhí)行方式。

[[420139]]

【51CTO.com快譯】圍繞WebAssembly的軟件行業(yè)正大行其道。這項(xiàng)技術(shù)通常名為WASM,正在改變我們的代碼在Web瀏覽器、邊緣云和物聯(lián)網(wǎng)設(shè)備等環(huán)境中的執(zhí)行方式。

本文主要介紹什么讓W(xué)ASM顯得很特殊、為什么您應(yīng)該關(guān)心它,以及為什么我認(rèn)為它會(huì)在未來幾年驅(qū)動(dòng)新一代軟件。我將列出WebAssembly的三大支柱——安全性、可移植性和性能,并概述為什么這三大支柱使WASM成為一股不可忽視的力量。

安全性

不妨從安全性開始說起。如今,安全性是許多人的頭等大事,供應(yīng)鏈問題、加密貨幣劫持和數(shù)據(jù)泄露的報(bào)道屢見不鮮。WebAssembly從許多方面加強(qiáng)安全,從安全沙箱開始入手。

執(zhí)行WASM后,代碼無法訪問任何內(nèi)容,包括網(wǎng)絡(luò)、文件系統(tǒng)或沙箱外面的其他任何內(nèi)容。這被稱為默認(rèn)拒絕安全模式,它不是由Docker等容器技術(shù)實(shí)現(xiàn)的。針對(duì)WASM沙箱內(nèi)運(yùn)行、與外界進(jìn)行交互的代碼,必須明確授予它對(duì)主機(jī)功能的訪問權(quán)限。

Web瀏覽器可以授予WASM模塊某些功能,比如獲取API和訪問DOM。云環(huán)境等其他主機(jī)可以使用WASI(WebAssembly系統(tǒng)接口)授予模塊對(duì)文件系統(tǒng)、隨機(jī)性(如 /dev/urandom)和系統(tǒng)時(shí)間等常見對(duì)象的訪問權(quán)限。這一切確保了WASM模塊內(nèi)的代碼只可以訪問其運(yùn)行所需要的資源,別的資源訪問不了。

為了應(yīng)對(duì)猖獗的供應(yīng)鏈攻擊,還有組織竭力使WebAssembly模塊的加密簽名成為該規(guī)范的標(biāo)準(zhǔn)部分。能夠使用受信任的密鑰對(duì)模塊進(jìn)行簽名,并在系統(tǒng)嘗試運(yùn)行該模塊時(shí)驗(yàn)證該簽名,這將是一大勝利,并有助于在使用WebAssembly構(gòu)建應(yīng)用程序時(shí)夯實(shí)“縱深防御”這種理念。

軟件供應(yīng)商開始將其API庫作為WASM模塊來分發(fā)時(shí),這將變得尤為重要;我們將能夠充分利用跨語言模塊鏈接(指由不同語言構(gòu)建的模塊能夠共享內(nèi)存和函數(shù)),同時(shí)還可以驗(yàn)證模塊是由供應(yīng)商開發(fā)的、并且未經(jīng)篡改。

可移植性

鏈接模塊這個(gè)想法引出了第二個(gè)支柱:可移植性。我喜歡從兩個(gè)方面來思考WASM的可移植性:語言可移植性和平臺(tái)可移植性。語言可移植性是用一種語言(比如Rust)編寫的模塊在用另一種語言(比如Go)編寫的系統(tǒng)中運(yùn)行的能力。由于WASM運(yùn)行時(shí)環(huán)境可以嵌入到其他軟件中,它們可用于引入專門的組件,而這些組件原本是您團(tuán)隊(duì)使用的主要語言不可能實(shí)現(xiàn)的。這個(gè)概念還可以應(yīng)用于通過將用不同語言編寫的多個(gè)WASM模塊組合起來以形成單個(gè)軟件而構(gòu)建的應(yīng)用程序,比如Atmo 框架。

在平臺(tái)可移植性方面,WebAssembly不依賴任何硬件架構(gòu),因此它可以在多個(gè)不同平臺(tái)上執(zhí)行,無需重新編譯。比如說,這將讓您可以生成單個(gè)WASM文件,在物聯(lián)網(wǎng)設(shè)備和云虛擬機(jī)上都可以運(yùn)行。WASM模塊被執(zhí)行時(shí),它就被提前(AOT)或即時(shí)(JIT)編譯成機(jī)器原生代碼。

WASM運(yùn)行時(shí)環(huán)境(比如Chrome的V8、Wasmtime或Wasmer)自動(dòng)執(zhí)行該編譯,這使得運(yùn)行任何模塊都非常簡(jiǎn)單。比如說,這在以下場(chǎng)景中變得很有用:當(dāng)流量高峰導(dǎo)致某個(gè)模塊面臨大量的入站請(qǐng)求時(shí),您的代碼自動(dòng)從中央云實(shí)例移動(dòng)到邊緣計(jì)算網(wǎng)絡(luò)。

性能

最后一個(gè)支柱是性能。WebAssembly旨在以原生或接近原生的速度執(zhí)行代碼。有眾多因素影響任何應(yīng)用程序的性能,包括語言、硬件、垃圾收集和虛擬化等。

使用WebAssembly,只需在運(yùn)行時(shí)針對(duì)每個(gè)平臺(tái)優(yōu)化自己,就可以以高性能的方式輕松執(zhí)行代碼。我們?nèi)蕴幱赪ebAssembly的早期階段,但它的性能已經(jīng)可以與經(jīng)過多年優(yōu)化的V8 JavaScript引擎相媲美。所有可編譯成WebAssembly的語言都將受益于將來為WASM運(yùn)行時(shí)環(huán)境帶來的任何性能改進(jìn),這對(duì)所有人來說都是一大利好。

我邀請(qǐng)您思考您在構(gòu)建軟件時(shí),問問自己開發(fā)平臺(tái)的哪些方面對(duì)您最重要。我敢打賭,本文討論的三個(gè)支柱中至少有兩個(gè)是貴公司的關(guān)鍵因素,您可以通過采用WebAssembly這種技術(shù),改進(jìn)代碼的關(guān)鍵屬性。但愿WASM會(huì)成為支持軟件工作流程的底層技術(shù),開發(fā)人員根本不需要操心它,就像今天大多數(shù)開發(fā)人員并不操心所用語言的編譯器生成的匯編代碼一樣。

主要區(qū)別在于,WebAssembly一開始就內(nèi)置了這些出色的屬性,確保您的代碼在默認(rèn)情況下是安全的、可移植的和高性能的,而今天的軟件工具做不到這點(diǎn)。

原文標(biāo)題:The Three Pillars of WebAssembly,作者:Connor Hicks

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2016-11-04 23:29:40

云計(jì)算IT基礎(chǔ)設(shè)施

2017-10-10 08:30:21

Kubernetes容器編排

2024-09-18 08:13:01

C#封裝繼承

2020-04-04 20:51:40

物聯(lián)網(wǎng)編程語言開發(fā)

2012-10-24 14:08:25

Elop趕快下臺(tái)

2023-03-30 19:17:54

語言編程

2021-12-13 20:00:49

工業(yè)網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全漏洞

2023-12-27 06:51:21

可觀測(cè)性系統(tǒng)數(shù)字體驗(yàn)

2013-05-26 15:47:12

SUSEEnterprise SUSE Cloud

2010-03-12 10:11:23

Python編程語言

2021-06-11 09:00:00

語言WebWebAssembly

2010-03-10 18:12:50

Python編程語言

2009-12-07 13:25:04

編程語言排行榜

2010-03-12 10:48:22

Python編程語言

2021-01-25 10:50:27

云計(jì)算云計(jì)算產(chǎn)業(yè)云應(yīng)用

2013-12-17 09:12:04

2024-10-10 09:52:14

2022-06-22 10:04:29

JavaScriptRust語言

2023-11-29 11:55:15

2023-05-31 13:59:37

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)