WebAssembly Runtime現(xiàn)已添加.NET Core API,開發(fā)者可直接在.NET應(yīng)用程序中調(diào)用WebAssembly模塊。
Mozilla宣布由Bytecode Alliance創(chuàng)建的Wasmtime(WebAssembly runtime)現(xiàn)已添加處于早期預(yù)覽版狀態(tài)的.NET Core API,這就意味著開發(fā)者可以直接在.NET應(yīng)用程序中調(diào)用WebAssembly代碼。
Bytecode Alliance(字節(jié)碼聯(lián)盟)是由Mozilla、Fastly、Intel與Red Hat聯(lián)合成立的組織,該聯(lián)盟旨在通過協(xié)作實(shí)施標(biāo)準(zhǔn)和提出新標(biāo)準(zhǔn),以完善WebAssembly在瀏覽器之外的生態(tài)。Mozilla提到,.NET Core作為一個(gè)跨平臺(tái)的Runtime,仍提供對(duì)WebAssembly的支持主要三個(gè)好處,除了可跨平臺(tái)共享更多代碼之外,還能安全地隔離不受信任的代碼,同時(shí)憑借著WebAssembly的接口類型(WebAssembly Interface Types),WebAssembly和.NET可相互傳遞復(fù)雜類型。
雖然我們能夠使用.NET Core構(gòu)建跨平臺(tái)應(yīng)用,但如果要使用諸如C或是Rust等原生函數(shù)庫,這仍然是十分不方便的操作,因?yàn)樾枰瘮?shù)庫為每個(gè)平臺(tái)發(fā)布特定函數(shù)庫版本。不過有了WebAssembly之后,我們可以將其作為橋梁以簡單滿足上面的需求。原生函數(shù)庫可以先編譯成WebAssembly,然后包括.NET Core在內(nèi)的許多平臺(tái)就能使用這些WebAssembly模塊,這將簡化函數(shù)庫的發(fā)布以及應(yīng)用程序?qū)@些函數(shù)庫的依賴方式。
由于WebAssembly是面向網(wǎng)頁設(shè)計(jì)的,網(wǎng)頁是一種每次訪問網(wǎng)站(讀/寫數(shù)據(jù))都會(huì)執(zhí)行不受信任代碼的環(huán)境,WebAssembly模塊只能調(diào)用從主機(jī)環(huán)境明確輸入的外部函數(shù),而且只能在主機(jī)分配的內(nèi)存區(qū)域進(jìn)行讀寫數(shù)據(jù),這種沙盒設(shè)計(jì)方式也能被應(yīng)用在.NET Core中,以增加安全性。通過支持WebAssembly,.NET Core也能使用沙盒以執(zhí)行不信任代碼。
另外,Bytecode Alliance力推的WebAssembly接口類型增加了WebAssembly與其他語言的互通性,.NET Core也能從中受益。Mozilla表示,WebAssembly接口類型簡化了應(yīng)用程序與WebAssembly模塊間來回傳遞復(fù)雜類型所需的“膠水代碼”。當(dāng)Wasmtime的.NET API最終可以對(duì)接口類型進(jìn)行操作,WebAssembly和.NET之間就能夠無縫地傳遞復(fù)雜類型。
最后,Wasmtime新增加的這個(gè).NET Core API尚處于預(yù)覽階段,Bytecode Alliance成員仍在對(duì)其積極開發(fā)中,更新將不保證向后兼容。當(dāng)前目標(biāo)是讓W(xué)asmtime更為穩(wěn)定,因此不建議開發(fā)者將Wasmtime的.NET Core API用于正式產(chǎn)品開發(fā)。
-
net
+關(guān)注
關(guān)注
0文章
127瀏覽量
57076 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3343瀏覽量
60209
發(fā)布評(píng)論請(qǐng)先 登錄
系統(tǒng)調(diào)用和API有什么區(qū)別呢?
深入了解API:詳解應(yīng)用程序接口的作用和原理
深入了解系統(tǒng)調(diào)用API:探索操作系統(tǒng)底層的關(guān)鍵接口
PYQT 應(yīng)用程序框架及開發(fā)工具
學(xué)生適合使用的SOLIDWORKS 云應(yīng)用程序
關(guān)于LABVIEW 生成EXE后 動(dòng)態(tài)調(diào)用外部VI的問題
RTOS SDK的canmv_net_mgmt網(wǎng)絡(luò)模塊如何編寫連接代碼?
使用 USB CDC 下載應(yīng)用程序固件,用時(shí)過長是為什么?
無法將應(yīng)用程序下載到串行閃存怎么解決?
從 app_gatt_callback調(diào)用這個(gè)隊(duì)列推送函數(shù)時(shí),程序出現(xiàn)了硬故障怎么解決?
對(duì)于具有直接反饋控制的 CCG3PA 應(yīng)用程序,是否可以正確地重新使用引腳 12(負(fù)載使能控制),它有哪些限制?
verilog模塊的調(diào)用、任務(wù)和函數(shù)
使用CAN以及CANIF配置了S32K310的CAN驅(qū)動(dòng)模塊,如何進(jìn)行報(bào)文的接收呢?
請(qǐng)問可以直接參考DLP4500軟件源碼的調(diào)用方式進(jìn)行控制嗎?需要添加哪些庫文件嗎?
AWTK-WEB 快速入門(6) - JS WebSocket 應(yīng)用程序
.NET應(yīng)用程序可以直接調(diào)用WebAssembly模塊了
評(píng)論