37个版本 (19个稳定版)
使用旧的Rust 2015
3.6.2 | 2023年4月24日 |
---|---|
3.6.1 | 2022年10月12日 |
3.5.0 | 2021年12月22日 |
3.4.0 | 2021年11月4日 |
0.1.3 | 2016年3月30日 |
#11 在 HTTP服务器
206,676 每月下载量
用于 53 个Crate (37个直接使用)
280KB
5.5K SLoC
Rouille,一个Rust Web微框架
Rouille是一个微Web框架库。它创建一个监听套接字并解析来自客户端的传入HTTP请求,然后让你处理请求。
Rouille的设计是为了让了解Rust的人使用起来直观。与类似express的框架不同,它不使用中间件。相反,所有操作都是以线性方式处理的。
与网站密切相关的概念(如cookies、CGI、表单输入等)直接由rouille支持。更通用的概念(如数据库处理或模板化)不直接处理,因为它们被认为与微Web框架正交。然而,rouille的设计使得它可以很容易地与任何第三方库结合使用,无需任何粘合代码。
文档
入门
如果你对HTTP的工作原理有一般了解,文档 和 有详细文档的示例 是很好的入门资源。
许可证
根据以下任一许可证授权:
- Apache许可证第2版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT),由你选择。
贡献
除非你明确声明,否则你提交的任何贡献,如果目的是包含在本作品中,则应根据上述方式双许可,不得附加任何额外条款或条件。
常见问题解答
关于性能如何?
Rust中的异步I/O、绿色线程、协程等仍然非常不成熟。
rouille库只是忽略这种优化,专注于提供易于使用的同步API,其中每个请求都在自己的专用线程中处理。
即使rouille本身是异步的,您也需要异步数据库客户端和异步文件加载来充分利用它。目前在Rust生态系统中还没有这样的库。
一旦解决了异步I/O问题,rouille将(希望是透明地)更新以考虑它。
但它快吗?
在作者的老Linux机器上,使用wrk -t 4 -c 4
进行的一些基本基准测试显示了以下结果
- rouille的hello-world示例产生约22k请求/秒。
- nodejs中的hello world(使用
http.createServer
)产生约14k请求/秒。 - tokio-minihttp(据说是目前最快的HTTP服务器)的hello-world示例产生约77k请求/秒。
- 使用异步I/O和mio的hyper的hello示例产生约53k请求/秒。
- Go中的hello world产生约51k请求/秒。
- nginx的默认安装产生约39k请求/秒。
虽然不是最快的,但rouille的性能是合理的。在这些示例中,rouille是唯一一个使用同步I/O的。
是否有数据库连接、模板等功能插件?
将数据库或模板集成到用rouille编写的Web服务器中应该是非常简单的。此外,插件需要维护,往往会造成依赖地狱。在作者看来,通常最好不使用插件。
但我习惯于使用表达式的框架!
而不是这样做:(伪代码)
server.add_middleware(function() {
// middleware 1
});
server.add_middleware(function() {
// middleware 2
});
server.add_middleware(function() {
// middleware 3
});
在rouille中,您只需完全手动处理每个请求
// initialize everything here
rouille::start_server(..., move |request| {
// middleware 1
// middleware 2
// middleware 3
});
依赖关系
~13–26MB
~591K SLoC