أفضل 10 أطر عمل Rust لتطوير الويب في 2024

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

أفضل 10 أطر عمل Rust لتطوير الويب: نظرة شاملة 2024



Rust هي لغة برمجة تجمع بين أداء لغة C++ وأمان الذاكرة الذي يضمنه المترجم. في عام 2024، وصل نظام أطر عمل Rust لتطوير الويب إلى مرحلة النضج: إصدارات مستقرة، وثائق غنية، وآلاف المشاريع الإنتاجية. في هذه المقالة، سنستعرض أفضل 10 أطر عمل Rust لتطوير الويب، ونقدم أمثلة على الأكواد، ونساعدك في اختيار الأداة المناسبة لمهمتك.



1. Actix Web — الأكثر أداءً



Actix Web (المعروف سابقًا باسم Actix) هو القائد الدائم لمعايير TechEmpower. يعتمد على نموذج الممثل (actor model)، لكن في الإصدار 4+ أصبح أقرب إلى منهجية البرمجيات الوسيطة الكلاسيكية. يدعم WebSocket وHTTP/2 والتسلسل التلقائي عبر Serde.



مثال على الكود:



use actix_web::{get, web, App, HttpServer, Responder};

#[get("/hello/{name}")]async fn greet(name: web::Path<String>) -> impl Responder { format!("Hello, {}!", name)}

#[actix_web::main]async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().service(greet) }) .bind("127.0.0.1:8080")? .run() .await}


متى تختاره: واجهات برمجة التطبيقات عالية التحميل، الخدمات المصغرة، التطبيقات في الوقت الفعلي.



2. Axum — حديث ومريح



Axum من فريق Tokio هو إطار عمل مبني على tower و hyper. الميزة الرئيسية هي المستخرجات (Extractors)، التي تسمح لك بالحصول على البيانات من الطلب دون تحليل صريح. غير متزامن بالكامل، ويدعم برمجيات Tower الوسيطة.



مثال على الكود:



use axum::{routing::get, Router, Json, extract::Path};use serde_json::{json, Value};

async fn user_handler(Path(id): Path<u32>) -> Json<Value> { Json(json!({"user_id": id, "name": "Rust"}))}

#[tokio::main]async fn main() { let app = Router::new().route("/user/:id", get(user_handler)); axum::Server::bind(&"0.0.0.0:3000".parse().unwrap()) .serve(app.into_make_service()) .await .unwrap();}


متى تختاره: المشاريع الجديدة التي تت أهمية النمطية والتكامل مع Tokio.



3. Rocket — البساطة والماكرو



Rocket هو إطار عمل يحتوي على نظام ماكرو غني يقلل من الكود النمطي. يدعم التحقق التلقائي من النماذج، والعمل مع قواعد البيانات عبر ORM (Diesel)، ومحركات القوالب (Tera). يتطلب الإصدار الليلي (nightly) من Rust.



مثال على الكود:



#[macro_use] extern crate rocket;

#[get("/<name>")]fn hello(name: &str) -> String { format!("Hello, {}!", name)}

#[launch]fn rocket() -> _ { rocket::build().mount("/", routes![hello])}


متى تختاره: النماذج الأولية، المشاريع الصغيرة، تعلم Rust.



4. Warp — تركيب الفلاتر



Warp يستخدم مفهوم "الفلاتر" — مكونات قابلة للتركيب تعالج الطلبات. يسمح ببناء منطق توجيه معقد دون هياكل متداخلة. يعمل على hyper و tokio.



مثال على الكود:



use warp::Filter;

#[tokio::main]async fn main() { let hello = warp::path!("hello" / String) .map(|name| format!("Hello, {}!", name));

warp::serve(hello) .run(([127, 0, 0, 1], 3030)) .await;}


متى تختاره: المسارات المعقدة، سلاسل البرمجيات الوسيطة، WebSocket.



5. Tide — البساطة و async/await



Tide هو إطار عمل خفيف من مبتكري async-std. واجهة برمجة تطبيقات بسيطة، لكنها مرنة. مناسب للخدمات المصغرة والتطبيقات التي لا تحتاج إلى تبعيات ثقيلة.



مثال على الكود:



use tide::Request;

async fn hello(req: Request<()>) -> tide::Result<String> { let name: Stri

المدونات

توصيات الكتب