3 คะแนน โดย GN⁺ 2024-10-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
GN⁺ 2024-10-23
ความคิดเห็นบน Hacker News
  • เน้นว่าการใช้ standard library ของภาษา Go ช่วยลดการพึ่งพาเว็บเฟรมเวิร์กที่ซับซ้อน เพิ่มความปลอดภัย และทำให้บำรุงรักษาง่ายขึ้น

    • แต่ก็เสนอความเห็นว่าใน Rust เว็บเฟรมเวิร์กยังคงมีประโยชน์อยู่
  • จากประสบการณ์การใช้เว็บ MVC framework ได้บทเรียนว่าไม่ควรวาง business logic ไว้ในชั้น model

    • แนะนำอย่างมากให้มี service layer และเสนอให้ใช้ gem อย่าง Interactor เพื่อนำไปทำเป็น command object
  • คาดหวังว่า REST framework ควรสามารถสร้าง Swagger definition ได้อัตโนมัติ

    • สงสัยว่าทำไมถึงพัฒนาขึ้นเองแทนที่จะใช้ ORM หรือ template engine ที่มีอยู่เดิม
  • มองว่าการเลือกชื่อของเฟรมเวิร์กใหม่เป็นวิธีที่ดีในการทำให้ขึ้นไปอยู่บนผลการค้นหาอันดับต้น ๆ

    • กล่าวว่าการสำรวจไอเดียใหม่ ๆ เป็นสิ่งสำคัญ
  • สนใจการย้ายจาก Python ไปยัง Rust

    • เสนอว่าเมื่ออยู่ในสเกลใหญ่ควรจัดการด้วย Reverse Proxy
  • เตือนว่าการรวม ORM เป็นฟีเจอร์ในตัวของเว็บเฟรมเวิร์กอาจดูสมเหตุสมผลในตอนแรก แต่เมื่อเวลาผ่านไปมันอาจกลายเป็นโปรเจ็กต์อิสระ หรือคุณอาจอยากใช้ ORM ตัวอื่น

  • กล่าวว่าควรมีเฟรมเวิร์กที่มีแนวทางชัดเจนและหนักแน่นแบบ Rails และ Django ให้มากกว่านี้

  • แสดงความคาดหวังต่อการเปิดตัวเฟรมเวิร์กที่จะมาเติมช่องว่างสำคัญใน Rust

  • จากประสบการณ์พัฒนา Django ทำให้ตระหนักถึงคุณค่าของ MVC และบอกว่าจะลองดูเฟรมเวิร์กใหม่นี้

  • หลังจากประเมินเฟรมเวิร์กหลายตัวสำหรับงาน Rust backend แล้ว มองว่า Axum เหมาะสมที่สุด

    • ประเมินว่าเฟรมเวิร์กใหม่นี้ตรงกับเกณฑ์ "มีของพร้อมใช้ครบ, แต่ไม่บังคับแนวทางมากเกินไป" อย่างสมบูรณ์แบบ