當前位置:
首頁 > 科技 > NET程序現可直接調用WebAssembly模塊

NET程序現可直接調用WebAssembly模塊

Bytecode Alliance發布的Wasmtime現在添加加.NET Core API,而這項更新的意思,代表開發人員將可直接在.NET程序中,載入WebAssembly程序代碼。Wasmtime是小型高性能的WebAssembly Runtime,目前這個新API正在初期預覽階段。

Bytecode Alliance是Mozilla、Fastly、英特爾和紅帽共同組成的WebAssembly聯盟,要通過共同提案並實例新標準,來推動WebAssembly在瀏覽器之外的應用。Mozilla提到,之所以.NET Core已經是一個跨平台的Runtime,仍然要支持WebAssembly,主要有3項好處,除了可跨平台共享更多程序代碼之外,還能安全地隔離不受信任程序代碼,同時也能因WebAssembly介面類型(WebAssembly Interface Types),使WebAssembly和.NET可相互傳遞複雜類型。

雖然.NET可以構建跨平台應用程序,但是要使用諸如C或是Rust等原生函數庫,卻仍然相當不方便,需要函數庫為每個平台發布特定的函數庫版本,不過,WebAssembly卻可以扮演橋樑的角色,簡單地滿足這項需求。原生函數庫能夠先編譯成WebAssembly,則許多平台包括.NET,就能使用這些WebAssembly模塊,這將能簡化函數庫的發布以及應用程序相依於這些函數庫的方式。

由於WebAssembly是為網頁設計,而網頁是一種每次訪問網站,都會執行不受信任程序代碼的環境,WebAssembly模塊只能調用從主機環境明確輸入的外部函數,而且也只能訪問主機所分配的內存區域,而這樣的沙盒程序代碼設計,也能被應用在.NET中增加程序安全性。

Mozilla提到,過去.NET Framework曾經嘗試要將不受信任程序代碼沙盒化,但是最終無論是程序代碼訪問安全性(Code Access Security)或是應用程序域(Application Domains)等技術,都無法正確隔離程序代碼,因此微軟最後在.NET Core中把沙盒移除。而通過支持WebAssembly,.NET Core也可應用沙盒執行不受信任程序代碼。

另外,最近Bytecode Alliance力推的WebAssembly介面類型,增加WebAssembly與其他語言的互通性,而.NET Core也將能得到這項好處,Mozilla表示,WebAssembly介面類型簡化應用程序與WebAssembly模塊間來回傳遞複雜類型所需要的黏合程序代碼。當Wasmtime的.NET API最終實例介面類型,將可讓WebAssembly和.NET之間無縫地傳遞複雜類型。

Wasmtime新加入的這個.NET Core API還在預覽階段,Bytecode Alliance成員仍積極開發中,更新將不保證向後兼容,目前Bytecode Alliance的第一目標是讓Wasmtime更為穩定,因此不建議開發者將Wasmtime的.NET Core API用於正式產品開發。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 十輪網 的精彩文章:

敢把決策權下放日本部屬!這個創辦人如何用「信任」,攻佔市場第一
AWS推出設備上存儲庫,簡化應用程序的數據訪問與同步