⚡ انتخاب نهایی برای ساختن خدمات وب مدرن: یک چارچوب سبک وزن HTTP – Community Dev

در دوران دیجیتال امروز ، ایجاد خدمات وب با کارایی بالا و قابل اعتماد هدفی است که توسط هر توسعه دهنده دنبال می شود. امروز ، ما مفتخریم که معرفی کنیم زیرزمینی، یک کتابخانه سرور Rust HTTP سبک و با کارایی بالا که برای ساده سازی توسعه خدمات وب شما طراحی شده است.
بررسی اجمالی پروژه
Hyperlane کاملاً با زنگ زدگی خالص و کتابخانه استاندارد ساخته شده است و سازگاری واقعی متقابل پلتفرم را در سراسر ویندوز ، لینوکس و MACOS ارائه می دهد-با رفتار API سازگار در تمام سیستم عامل ها. این زمان از زمان اجرا ناهمزمان توکیو استفاده می کند تا ارتباطات شبکه یکپارچه را بدون وابستگی های خاص پلتفرم فعال کند.
ویژگی های کلیدی:
- از درخواست HTTP تجزیه و تحلیل ، ساخت پاسخ و ارتباطات TCP پشتیبانی می کند.
- پشتیبانی داخلی برای رویدادهای Middleware درخواست/پاسخ ، WebSocket و Server-SENT (SSE) برای ارتباطات کارآمد و انعطاف پذیر در زمان واقعی.
- طراحی ساده و بصری API که به توسعه دهندگان اجازه می دهد تا به سرعت خدمات وب مدرن را بسازند.
شروع
برای شروع کار با Hyperlane ، با استفاده از دستور زیر آن را به پروژه خود اضافه کنید:
cargo add hyperlane
ما همچنین یک پروژه شروع سریع ، Hyperlane-Quick-Start را ارائه می دهیم تا به شما در راه اندازی و اجرای اولین برنامه هایپرلاین خود کمک کند.
کلون پروژه:
git clone https://github.com/eastspire/hyperlane-quick-start.git
به فهرست پروژه بروید:
cd hyperlane-quick-start
پروژه را اجرا کنید:
cargo run
همچنین می توانید آن را در پس زمینه اجرا کنید ، متوقف شوید یا سرویس را مجدداً راه اندازی کنید:
# Run in background
cargo run -d
# Stop the service
cargo run stop
# Restart the service
cargo run restart
# Restart in background
cargo run restart -d
استفاده از مثال
در زیر یک برنامه هایپرلای ساده نشان می دهد که نحوه تنظیم میان افزار ، مسیرها و پشتیبانی WebSocket را نشان می دهد:
use hyperlane::*;
async fn request_middleware(ctx: Context) {
let socket_addr: String = ctx.get_socket_addr_or_default_string().await;
ctx.set_response_header(SERVER, HYPERLANE)
.await
.set_response_header(CONNECTION, CONNECTION_KEEP_ALIVE)
.await
.set_response_header(CONTENT_TYPE, TEXT_PLAIN)
.await
.set_response_header("SocketAddr", socket_addr)
.await;
}
async fn response_middleware(ctx: Context) {
let _ = ctx.send().await;
}
async fn root_route(ctx: Context) {
ctx.set_response_status_code(200)
.await
.set_response_body("Hello hyperlane => /")
.await;
}
async fn websocket_route(ctx: Context) {
let request_body: Vec<u8> = ctx.get_request_body().await;
let _ = ctx.send_response_body(request_body).await;
}
fn error_handle(error: String) {
eprintln!("{}", error);
let _ = std::io::Write::flush(&mut std::io::stderr());
}
#[tokio::main]
async fn main() {
let server: Server = Server::new();
server.host("0.0.0.0").await;
server.port(60000).await;
server.enable_nodelay().await;
server.disable_linger().await;
server.http_line_buffer_size(4096).await;
server.websocket_buffer_size(4096).await;
server.error_handle(error_handle).await;
server.request_middleware(request_middleware).await;
server.response_middleware(response_middleware).await;
server.route("https://dev.to/", root_route).await;
server.route("/websocket", websocket_route).await;
server
.route("/test/:text", move |ctx: Context| async move {
let param: RouteParams = ctx.get_route_params().await;
panic!("Test panic {:?}", param);
})
.await;
server.run().await.unwrap();
}
معیار عملکرد
ما Hyperlane را محک زدیم تا عملکرد عالی آن را با استفاده از wrk
وت ab
ابزارها در زیر نتایج آمده است:
معیار WRK
دستور:
wrk -c360 -d60s http://127.0.0.1:60000/
نتایج:
درجه | چارچوب | SWC |
---|---|---|
1 | توکی | 340،130.92 |
2 | زیرزمینی | 324،323.71 |
3 | موشک | 298،945.31 |
4 | stdlib stdlib | 291،218.96 |
5 | جین | 242،570.16 |
6 | برو stdlib | 234،178.93 |
7 | گره stdlib | 139،412.13 |
معیار AB
دستور:
ab -n 1000000 -c 1000 -r -k http://127.0.0.1:60000/
نتایج:
درجه | چارچوب | SWC |
---|---|---|
1 | توکی | 308،596.26 |
2 | زیرزمینی | 307،568.90 |
3 | موشک | 267،931.52 |
4 | stdlib stdlib | 260،514.56 |
5 | برو stdlib | 226،550.34 |
6 | جین | 224،296.16 |
7 | گره stdlib | 85،357.18 |
مجوز و مشارکت
Hyperlane تحت مجوز MIT منتشر می شود. برای اطلاعات بیشتر ، لطفاً به پرونده مجوز مراجعه کنید.
ما از کمک های جامعه استقبال می کنیم! می توانید با ارسال مشکلات یا باز کردن درخواست های کشش درگیر شوید.
اگر سؤال دارید یا به کمک بیشتری نیاز دارید ، با نویسنده تماس بگیرید: root@ltpp.vip.
Hyperlane را انتخاب کنید-آینده توسعه خدمات وب با کارایی بالا و ظریف را انتخاب کنید. سفر توسعه خود را اکنون شروع کنید و سرعت و سادگی را که هایپلاین به ارمغان می آورد تجربه کنید!