在 .NET 7上使用 WASM 和 WASI

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 瀏覽器中的運行時。它需要另一個運行時。這就是為什麼像WasmtimeWasmerWasmEdge這樣的運行時存在的原因。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 核心應用程式」 ,創建一個 .NET 7 Web API 項目,然後添加適用於 .NET 的 WASI SDK。