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文章
125瀏覽量
56137 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3243瀏覽量
57603
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論