- Rwf là một framework toàn diện để xây dựng ứng dụng web bằng Rust
- Được viết theo mô hình MVC (model-view-controller) cổ điển và cung cấp sẵn mọi thứ cần thiết để dễ dàng xây dựng các ứng dụng web nhanh và an toàn
Tổng quan tính năng
- Máy chủ HTTP
- ORM thân thiện với người dùng giúp viết truy vấn PostgreSQL dễ dàng
- Template động
- Xác thực và phiên người dùng tích hợp sẵn
- Middleware
- Tác vụ nền và tác vụ theo lịch
- Migration cơ sở dữ liệu
- Framework REST tích hợp sẵn hỗ trợ tuần tự hóa JSON
- Hỗ trợ WebSockets
- Lưu trữ tệp tĩnh
- Tích hợp chặt chẽ với Hotwired Turbo để xây dựng SPA theo hướng backend
- Cấu hình theo môi trường
- Logging và metrics
- CLI
- Máy chủ WSGI để di chuyển từ các ứng dụng Django/Flask
Bắt đầu nhanh
- Để thêm Rwf vào stack, hãy tạo một ứng dụng nhị phân Rust và thêm
rwf cùng tokio vào dependencies:
cargo add rwf
cargo add tokio@1 --features full
- Việc xây dựng ứng dụng đơn giản như sau:
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();
}
Trạng thái
- Rwf hiện đang ở giai đoạn phát triển ban đầu và chưa sẵn sàng cho production. Nhiều tính năng và tài liệu vẫn chưa hoàn thiện.
Tóm tắt của GN⁺
- Rwf là một framework mạnh mẽ để xây dựng ứng dụng web bằng Rust, sử dụng mô hình MVC và cung cấp nhiều tính năng để dễ dàng phát triển các ứng dụng web nhanh và an toàn.
- Vì vẫn đang ở giai đoạn phát triển ban đầu nên có thể khó sử dụng trong môi trường production, nhưng nhiều tính năng và tài liệu sẽ tiếp tục được cập nhật.
- Hữu ích cho các nhà phát triển muốn xây dựng ứng dụng web bằng Rust, đồng thời cũng có thể hỗ trợ nếu đang cân nhắc di chuyển từ các framework hiện có như Django hoặc Flask.
- Các framework web Rust khác có tính năng tương tự gồm có Actix, Rocket, v.v.
1 bình luận
Ý kiến trên Hacker News
Nhấn mạnh rằng việc sử dụng thư viện chuẩn của Go giúp giảm sự phụ thuộc vào các web framework phức tạp, tăng cường bảo mật và giúp bảo trì dễ dàng hơn
Từ kinh nghiệm sử dụng web MVC framework, rút ra bài học rằng không nên đặt logic nghiệp vụ ở tầng model
Kỳ vọng REST framework có thể tự động tạo định nghĩa Swagger
Đánh giá việc chọn tên cho framework mới là một cách hay để dễ lên top kết quả tìm kiếm
Quan tâm đến việc di chuyển từ Python sang Rust
Cảnh báo rằng việc tích hợp ORM như một tính năng sẵn có của web framework ban đầu có thể trông hợp lý, nhưng theo thời gian nó có thể tách thành dự án độc lập hoặc khiến người dùng muốn chuyển sang ORM khác
Nhắc rằng cần có thêm những framework mang quan điểm mạnh mẽ như Rails và Django
Bày tỏ sự kỳ vọng về việc ra mắt một framework giúp lấp đầy khoảng trống lớn trong hệ sinh thái Rust
Qua kinh nghiệm phát triển với Django, nhận ra giá trị của MVC và cho biết sẽ xem thử framework mới
Sau khi đánh giá nhiều framework cho công việc backend Rust, kết luận rằng Axum là lựa chọn phù hợp nhất