3P by neo 23일전 | favorite | 댓글 1개
  • Rwf는 Rust로 웹 애플리케이션을 구축하기 위한 종합적인 프레임워크
  • 고전적인 MVC 패턴(모델-뷰-컨트롤러)을 사용하여 작성되었으며, 빠르고 안전한 웹 앱을 쉽게 구축할 수 있는 모든 것을 기본으로 제공

기능 개요

  • HTTP 서버
  • PostgreSQL 쿼리를 쉽게 작성할 수 있는 사용자 친화적인 ORM
  • 동적 템플릿
  • 인증 및 내장 사용자 세션
  • 미들웨어
  • 백그라운드 작업 및 예약 작업
  • 데이터베이스 마이그레이션
  • JSON 직렬화를 지원하는 내장 REST 프레임워크
  • WebSockets 지원
  • 정적 파일 호스팅
  • 백엔드 주도의 SPA 구축을 위한 Hotwired Turbo와의 긴밀한 통합
  • 환경별 구성
  • 로깅 및 메트릭
  • CLI
  • Django/Flask 앱에서 마이그레이션하기 위한 WSGI 서버

빠른 시작

  • Rwf를 스택에 추가하려면 Rust 바이너리 애플리케이션을 생성하고 rwftokio를 종속성에 추가함:
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 등이 있음.
Hacker News 의견
  • Go 언어의 표준 라이브러리 사용을 통해 복잡한 웹 프레임워크 의존성을 줄이고 보안성을 높이며, 유지보수가 용이함을 강조함

    • Rust에서는 여전히 웹 프레임워크가 유용할 수 있다는 의견을 제시함
  • 웹 MVC 프레임워크 사용 경험에서 비즈니스 로직을 모델 레이어에 두지 않도록 해야 한다는 교훈을 얻음

    • 서비스 레이어를 강력히 권장하며, Interactor 같은 gem을 사용하여 명령 객체로 구현하는 것을 제안함
  • REST 프레임워크가 Swagger 정의를 자동 생성할 수 있어야 한다고 기대함

    • 기존 ORM이나 템플릿 엔진을 사용하지 않고 자체 개발한 이유에 대해 궁금해함
  • 새로운 프레임워크의 이름 선택이 검색 결과 상위에 오를 수 있는 좋은 방법이라고 평가함

    • 새로운 아이디어를 탐구하는 것이 중요하다고 언급함
  • Python에서 Rust로의 마이그레이션에 관심을 가짐

    • 대규모에서는 Reverse Proxy로 처리해야 한다고 제안함
  • ORM을 웹 프레임워크의 내장 기능으로 포함하는 것이 처음에는 합리적으로 보일 수 있지만, 시간이 지나면 독립 프로젝트가 되거나 다른 ORM을 사용하고 싶어질 수 있다고 경고함

  • Rails와 Django 같은 강력한 의견을 가진 프레임워크가 더 필요하다고 언급함

  • Rust에서의 주요 공백을 채우는 프레임워크의 출시에 대해 기대감을 표함

  • Django 개발 경험을 통해 MVC의 가치를 깨달았으며, 새로운 프레임워크를 살펴볼 것임을 언급함

  • Rust 백엔드 작업을 위한 다양한 프레임워크를 평가한 결과 Axum이 가장 적합하다고 판단함

    • 새로운 프레임워크가 "배터리 포함, 하지만 너무 규정적이지 않음"이라는 기준에 완벽히 부합한다고 평가함