在 .NET 7上使用 WASM 和 WASI

【在 .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 浏览器中的运行时 。它需要另一个运行时 。这就是为什么像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 核心应用程序” ,创建一个 .NET 7 Web API 项目,然后添加适用于 .NET 的 WASI SDK 。

    推荐阅读