- Rwf เป็นเฟรมเวิร์กแบบครบวงจรสำหรับสร้างเว็บแอปพลิเคชันด้วย Rust
- เขียนตามแพตเทิร์น MVC แบบดั้งเดิม (Model-View-Controller) และมีทุกอย่างที่จำเป็นมาให้พร้อมสำหรับการสร้างเว็บแอปที่รวดเร็วและปลอดภัยได้อย่างง่ายดาย
ภาพรวมความสามารถ
- HTTP server
- ORM ที่ใช้งานเป็นมิตรและช่วยให้เขียน PostgreSQL query ได้ง่าย
- เทมเพลตแบบไดนามิก
- การยืนยันตัวตนและเซสชันผู้ใช้ในตัว
- มิดเดิลแวร์
- งานเบื้องหลังและงานตามกำหนดเวลา
- การทำ database migration
- REST framework ในตัวที่รองรับการทำ JSON serialization
- รองรับ WebSockets
- การโฮสต์ไฟล์แบบสแตติก
- ผสานการทำงานอย่างใกล้ชิดกับ Hotwired Turbo สำหรับการสร้าง SPA แบบ backend-driven
- การตั้งค่าตาม environment
- การบันทึกล็อกและเมตริก
- CLI
- WSGI server สำหรับย้ายมาจากแอป Django/Flask
เริ่มต้นอย่างรวดเร็ว
- หากต้องการเพิ่ม Rwf เข้าไปในสแตก ให้สร้าง Rust binary application แล้วเพิ่ม
rwf และ tokio เป็น dependency:
cargo add rwf
cargo add tokio@1 --features full
- การสร้างแอปทำได้ง่ายดังนี้:
use rwf::prelude::*;
use rwf::http::Server;
#[derive(Default)]
struct IndexController;
#[async_trait]
impl Controller for IndexController {
async fn handle(&self, request: &Request) -> Result {
Ok(Response::new().html("Hey Rwf!"))
}
}
#[tokio::main]
async fn main() {
Server::new(vec![
route!("/" => IndexController),
])
.launch("0.0.0.0:8000")
.await
.unwrap();
}
สถานะ
- Rwf ยังอยู่ในช่วงพัฒนาเริ่มต้นและยังไม่พร้อมสำหรับใช้งานจริงในโปรดักชัน หลายฟีเจอร์และเอกสารยังไม่สมบูรณ์
สรุปโดย GN⁺
- Rwf เป็นเฟรมเวิร์กทรงพลังสำหรับสร้างเว็บแอปพลิเคชันด้วย Rust โดยใช้แพตเทิร์น MVC และมีความสามารถหลากหลายที่ช่วยให้พัฒนาเว็บแอปที่รวดเร็วและปลอดภัยได้ง่ายขึ้น
- เนื่องจากยังอยู่ในช่วงพัฒนาเริ่มต้น จึงอาจยังใช้งานในสภาพแวดล้อมโปรดักชันได้ยาก แต่คาดว่าฟีเจอร์ต่าง ๆ และเอกสารจะได้รับการอัปเดตอย่างต่อเนื่อง
- เหมาะสำหรับนักพัฒนาที่ต้องการพัฒนาเว็บแอปพลิเคชันด้วย Rust และยังอาจเป็นประโยชน์กับผู้ที่กำลังพิจารณาย้ายมาจากเฟรมเวิร์กเดิมอย่าง Django หรือ Flask
- เว็บเฟรมเวิร์กอื่นที่สร้างบน Rust และมีความสามารถใกล้เคียงกัน ได้แก่ Actix, Rocket เป็นต้น.
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เน้นว่าการใช้ standard library ของภาษา Go ช่วยลดการพึ่งพาเว็บเฟรมเวิร์กที่ซับซ้อน เพิ่มความปลอดภัย และทำให้บำรุงรักษาง่ายขึ้น
จากประสบการณ์การใช้เว็บ MVC framework ได้บทเรียนว่าไม่ควรวาง business logic ไว้ในชั้น model
คาดหวังว่า REST framework ควรสามารถสร้าง Swagger definition ได้อัตโนมัติ
มองว่าการเลือกชื่อของเฟรมเวิร์กใหม่เป็นวิธีที่ดีในการทำให้ขึ้นไปอยู่บนผลการค้นหาอันดับต้น ๆ
สนใจการย้ายจาก Python ไปยัง Rust
เตือนว่าการรวม ORM เป็นฟีเจอร์ในตัวของเว็บเฟรมเวิร์กอาจดูสมเหตุสมผลในตอนแรก แต่เมื่อเวลาผ่านไปมันอาจกลายเป็นโปรเจ็กต์อิสระ หรือคุณอาจอยากใช้ ORM ตัวอื่น
กล่าวว่าควรมีเฟรมเวิร์กที่มีแนวทางชัดเจนและหนักแน่นแบบ Rails และ Django ให้มากกว่านี้
แสดงความคาดหวังต่อการเปิดตัวเฟรมเวิร์กที่จะมาเติมช่องว่างสำคัญใน Rust
จากประสบการณ์พัฒนา Django ทำให้ตระหนักถึงคุณค่าของ MVC และบอกว่าจะลองดูเฟรมเวิร์กใหม่นี้
หลังจากประเมินเฟรมเวิร์กหลายตัวสำหรับงาน Rust backend แล้ว มองว่า Axum เหมาะสมที่สุด