3 puntos por GN⁺ 2024-10-23 | 1 comentarios | Compartir por WhatsApp
  • Rwf es un framework integral para crear aplicaciones web con Rust
  • Está escrito usando el patrón clásico MVC (modelo-vista-controlador) y ofrece por defecto todo lo necesario para crear fácilmente aplicaciones web rápidas y seguras

Resumen de funciones

  • Servidor HTTP
  • ORM fácil de usar para escribir consultas PostgreSQL con facilidad
  • Plantillas dinámicas
  • Autenticación y sesiones de usuario integradas
  • Middleware
  • Tareas en segundo plano y tareas programadas
  • Migraciones de base de datos
  • Framework REST integrado con soporte para serialización JSON
  • Soporte para WebSockets
  • Hosting de archivos estáticos
  • Integración estrecha con Hotwired Turbo para crear SPA impulsadas desde el backend
  • Configuración por entorno
  • Logging y métricas
  • CLI
  • Servidor WSGI para migrar desde aplicaciones Django/Flask

Inicio rápido

  • Para agregar Rwf a tu stack, crea una aplicación binaria de Rust y agrega rwf y tokio a las dependencias:
cargo add rwf  
cargo add tokio@1 --features full  
  • Crear una app es tan simple como esto:
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();  
}  

Estado

  • Rwf está en una etapa inicial de desarrollo y no está listo para producción. Muchas funciones y partes de la documentación están incompletas.

Resumen de GN⁺

  • Rwf es un framework potente para crear aplicaciones web con Rust, y usa el patrón MVC para ofrecer varias funciones que facilitan el desarrollo de apps web rápidas y seguras.
  • Como todavía está en una etapa temprana de desarrollo, puede ser difícil usarlo en entornos de producción, aunque se espera que sus funciones y documentación sigan actualizándose.
  • Puede ser útil para desarrolladores que quieran crear aplicaciones web con Rust, y también para quienes estén considerando migrar desde frameworks existentes como Django o Flask.
  • Otros frameworks web basados en Rust con funciones similares incluyen Actix y Rocket.

1 comentarios

 
GN⁺ 2024-10-23
Opiniones en Hacker News
  • Se enfatiza que usar la biblioteca estándar de Go reduce la dependencia de frameworks web complejos, mejora la seguridad y facilita el mantenimiento

    • Se plantea que en Rust los frameworks web todavía pueden ser útiles
  • A partir de la experiencia usando frameworks web MVC, se obtiene la lección de que no se debe poner la lógica de negocio en la capa de modelos

    • Se recomienda fuertemente una capa de servicios, y se propone implementarla como objetos de comando usando gems como Interactor
  • Se espera que un framework REST pueda generar automáticamente definiciones de Swagger

    • Se expresa curiosidad por la razón de haberlo desarrollado por cuenta propia en lugar de usar un ORM o motor de plantillas existente
  • Se valora que elegir el nombre de un framework nuevo es una buena forma de aparecer en los primeros resultados de búsqueda

    • Se menciona que es importante explorar ideas nuevas
  • Hay interés en migrar de Python a Rust

    • Se sugiere que, a gran escala, esto debería manejarse con un Reverse Proxy
  • Se advierte que incluir un ORM como función integrada de un framework web puede parecer razonable al principio, pero con el tiempo podría convertirse en un proyecto independiente o surgir el deseo de usar otro ORM

  • Se menciona que hacen falta más frameworks con posturas firmes como Rails y Django

  • Se expresa expectativa por el lanzamiento de un framework que cubra un vacío importante en Rust

  • A través de la experiencia de desarrollo con Django, se reconoce el valor de MVC y se menciona que se revisará el nuevo framework

  • Tras evaluar varios frameworks para trabajo de backend en Rust, se concluye que Axum es el más adecuado

    • Se considera que el nuevo framework encaja perfectamente con el criterio de "batteries included, but not too prescriptive"