46个版本 (25个重大更新)
新版本 0.27.0 | 2024年8月23日 |
---|---|
0.25.2 | 2024年7月11日 |
0.19.0 | 2024年3月27日 |
#72 在 WebAssembly 中
7,566 每月下载量
在 3 个包 中使用
240KB
1K SLoC
WASI HTTP
WebAssembly系统接口(WASI)的提议API。
当前阶段
wasi-http目前处于第3阶段
支持者
- Piotr Sikora
- Jiaxiao Zhou
- Dan Chiarlone
- David Justice
- Luke Wagner
可移植性标准
WASI-http必须在至少两个完整的独立实现中展示,这些实现要在生产HTTP服务器环境中嵌入。
介绍
WASI-http提议定义了一组用于发送和接收HTTP请求和响应的接口。WASI-http还定义了一个世界,wasi:http/proxy
,它定义了wasm HTTP代理的最小执行环境。
目标
该提议旨在通过直接映射到抽象的HTTP语义来抽象HTTP版本和传输协议选择(例如HTTP/1.1、HTTP/2或HTTP/3),从而使主机可以(大部分)透明地使用这些之一。
wasi:http/proxy
世界旨在通过需要最少额外的运行时支持,可由各种主机实现,包括Web服务工作者、正向和反向代理和源服务器。
wasi:http/proxy
世界旨在通过将核心accept()
循环移到主机,并允许主机根据到达的请求动态启动wasm实例,以支持灵活的自动扩展(“无服务器”)执行。
WASI-http世界旨在允许直接使用组件模型链接来实现HTTP中间件的链式操作。(完全实现这一目标将需要预览版3中才有的额外功能。)
非目标
WASI-http并不旨在定义一个更全面的云执行环境(关于这一点,请参阅wasi-cloud-core提案)。
API 演示
首先阅读proxy.wit
的注释,然后是handler.wit
,最后是types.wit
,就可以理解这个提案了。
使用WIT
可以通过以下方式从wit
目录生成绑定
wit-bindgen c wit/ --world proxy
并且可以通过以下方式验证和操作
wasm-tools component wit wit/ ...
wit/deps
目录包含了依赖于此提案的几个WASI提案内容的实时快照。它会通过在根目录下运行wit-deps update
来自动更新,该命令获取每个提案的main
分支的实时内容。随着事物的稳定,wit/deps.toml
将被更新以引用版本化发布。
参考文献及致谢
- 本提案由proxy-wasm提出并开发。
依赖项
~6–22MB
~348K SLoC