WasmEdge 集成
WasmEdge 是云原生和边缘计算应用的“无服务器”运行时。它允许开发人员安全地将第三方或“本地”函数嵌入主机应用程序或分布式计算框架中。
将 WasmEdge 嵌入到主机应用程序中
WasmEdge 的一个主要用例是从主机应用程序启动虚拟机实例。根据你的主机应用程序编程语言,你可以使用 WasmEdge SDK 来启动和调用 WasmEdge 函数。
- 使用 WasmEdge C API 将 WasmEdge 函数嵌入到基于
C
的应用程序中。查看快速入门指南。 - 使用 WasmEdge Go API 将 WasmEdge 函数嵌入到
Go
应用程序中。这里有一个教程 和一些示例! - 使用 WasmEdge Rust crate 将 WasmEdge 函数嵌入到
Rust
应用程序中。 - 使用
NAPI
将 WasmEdge 函数嵌入到Node.js
应用程序中。这里有一个教程。 - 通过生成一个新进程将 WasmEdge 函数嵌入到任何应用程序。查看 Vercel 无服务器函数 和 AWS Lambda 的示例。
不过,WebAssembly 规范仅支持用于 WebAssembly 字节码函数的非常有限的输入参数和返回值的数据类型。要传递复杂数据类型(例如字符串或数组)作为来自 Rust 编译的 WebAssembly 的调用参数,你应该使用wasmedge-bindgen
提供的 bindgen
解决方案。我们目前在 Rust 和 Go 中支持wasmedge-bindgen
。
使用 WasmEdge 作为类似 Docker 的容器
WasmEdge 提供符合 OCI 规范的接口。你可以使用诸如 CRI-O、Docker Hub 和 Kubernetes 之类的容器工具来编排和管理 WasmEdge 运行时。
从 WasmEdge 调用原生宿主函数
WasmEdge 的一个关键特性是其可扩展性。WasmEdge API 允许开发人员将来自主机编程语言的“主机函数”注册到 WasmEdge 实例中,并从 WebAssembly 程序中调用这些函数。
这是一个示例,演示了 WasmEdge 中的 JavaScript 程序调用底层操作系统中基于 C 的主机函数。
主机函数打破了 WASM 沙箱,以便访问底层操作系统或硬件。但这种沙箱破坏是经过系统操作者明确许可的。