4个版本
使用旧的Rust 2015
0.0.4 | 2017年11月13日 |
---|---|
0.0.3 | 2017年10月12日 |
0.0.2 | 2017年10月6日 |
0.0.1 | 2017年10月2日 |
#619 in #web-framework
13KB
187 行
zap
⚡
zap
的使命是提供一个基本但快速的Rust Web框架。
关于
此代码基于tokio的minihttp项目,所以特别感谢他们。 (来源)
如何使用
将以下内容添加到您的Cargo.toml
[dependencies]
zap = "0.0.4"
速度
所以zap
不仅速度快,比基于hyper
的iron快2.96倍,以下是基准测试结果
基准测试代码
Iron
此代码取自ironframework.io网页。
extern crate iron;
use iron::prelude::*;
use iron::status;
fn main() {
fn hello_world(_: &mut Request) -> IronResult<Response> {
Ok(Response::with((status::Ok, "Hello World!")))
}
Iron::new(hello_world).http("localhost:3000").unwrap();
}
Zap
可以通过以下方式运行此示例
$ git clone https://github.com/oldaniel/zap && cd zap
$ cargo run --example hello-world --release
extern crate zap;
use std::io::Error as ZapError;
use zap::prelude::*;
struct HelloWorld;
impl Handler for HelloWorld {
type Request = Request;
type Response = Response;
type Error = ZapError;
type Future = ZapResult;
fn call(&self, _: Request) -> ZapResult {
let mut resp = Response::new();
resp.body("Hello World!");
resp.ok()
}
}
fn main() {
let addr = "0.0.0.0:8080".parse().unwrap();
let mut server = Server::new(Http, addr);
server.threads(8);
server.serve(|| Ok(HelloWorld));
}
基准测试结果
使用以下命令计算了基准测试结果:wrk -t16 -c500 -d10s http://127.0.0.1:8080 --latency
服务器技术细节
- Intel Core I7-6700K,超线程
- 16GB RAM,2400MHZ
详细结果:[在wiki中](https://github.com/oldaniel/zap/wiki/Benchmarks)
Iron
[...]
Requests/sec: 307581.17
Transfer/sec: 33.44MB
Zap
[...]
Requests/sec: 912832.31
Transfer/sec: 40.90MB
待办事项
我们还需要做一些事情
- 让它更快
- URL和正文解析
- 请求键存储
致谢与许可证
由Daniel Oltmanns发起的项目。其他令人惊叹的贡献者[在此](https://github.com/oldaniel/zap/graphs/contributors)。
依赖项
~6.5MB
~103K SLoC