WebAssembly(WASM)和WebAssembly System Interface(WASI)為開發人員開辟了新的世界。.NET 開發人員在 Blazor WebAssembly 發布時熟悉了 WASM。Blazor WebAssembly 在瀏覽器中基于 WebAssembly 的 .NET 運行時上運行客戶端。WASI通過提供一個系統接口來在Web之外運行WebAssembly,從而將WASM帶出瀏覽器世界。它是 WASM 模塊如何與主機環境交互的標準。
什么是WASM?
WebAssembly(WASM)是基于堆棧的虛擬機的二進制指令格式。WASM 是編程語言的可移植編譯目標。它是一種低級匯編語言,具有緊湊的二進制格式,運行接近本機的性能,并提供 C#、C/C++ 和 Rust 等語言。具有可在瀏覽器和其他環境中運行的編譯目標。
什么是WASI?
WebAssembly 系統接口 (WASI) 是 WASM 模塊如何與主機環境交互的標準。WASI是WebAssembly系統接口的規范。它是一組 API,WebAssembly 模塊可以調用這些 API 來訪問主機環境。
由于 WASI 是在瀏覽器之外安全地運行 WASM,因此它無法利用嵌入到我們現代 Web 瀏覽器中的運行時。它需要另一個運行時。這就是為什么像Wasmtime,Wasmer或WasmEdge這樣的運行時存在的原因。Wasmtime是WebAssembly的獨立JIT風格的運行時。它被設計為作為獨立的命令行實用程序運行,嵌入到其他應用程序中,或用于在更大的運行時中運行WebAssembly模塊。
.NET 7 WASI SDK
被稱為 ASP.NET Core Blazor WebAssembly 之父的 Steve Sanderson,他在年初幾個月前打開了 GitHub 存儲庫SteveSandersonMS/dotnet-wasi-sdk。“Experimental WASI SDK for .NET Core” 就這么誕生了。幾周前,這個倉庫被轉移到 dotnet/dotnet-wasi-sdk。這是否暗示它已準備好進入下一步?我深信不疑,我們會在 2022 年 .NET 大會期間會聽到Steve Sanderson 聊這一點。
2022.11.8 ?09:30 - 10:00 PST
.NET 7 中 Blazor 的新增功能
Steve Sanderson
.NET 7 中的 Blazor 增加了許多新的改進,使構建漂亮的交互式 Web UI 更輕松、更高效。在本次會議中,我們將介紹對自定義元素的新支持、改進的數據綁定、處理位置更改事件、顯示加載進度、動態身份驗證請求等!
如何使用 WASI SDK for .NET 構建 .NET 7 Web Api,具體參考 “如何使用:ASP.NET 核心應用程序:https://github.com/dotnet/dotnet-wasi-sdk#how-to-use-aspnet-core-applications” ,創建一個 .NET 7 Web API 項目,然后添加適用于 .NET 的 WASI SDK。