3 Punkte von GN⁺ 2024-10-23 | 1 Kommentare | Auf WhatsApp teilen
  • Rwf ist ein umfassendes Framework zum Erstellen von Webanwendungen mit Rust
  • Es wurde nach dem klassischen MVC-Muster (Model-View-Controller) entwickelt und bietet standardmäßig alles, was man braucht, um schnell und einfach performante und sichere Web-Apps zu bauen

Funktionsüberblick

  • HTTP-Server
  • Benutzerfreundliches ORM zum einfachen Schreiben von PostgreSQL-Abfragen
  • Dynamische Templates
  • Authentifizierung und integrierte Benutzersitzungen
  • Middleware
  • Hintergrundjobs und geplante Aufgaben
  • Datenbankmigrationen
  • Integriertes REST-Framework mit Unterstützung für JSON-Serialisierung
  • Unterstützung für WebSockets
  • Hosting statischer Dateien
  • Enge Integration mit Hotwired Turbo zum Aufbau backendgesteuerter SPAs
  • Umgebungsspezifische Konfiguration
  • Logging und Metriken
  • CLI
  • WSGI-Server für die Migration von Django-/Flask-Apps

Schnellstart

  • Um Rwf zum Stack hinzuzufügen, erstellt man eine Rust-Binary-Anwendung und fügt rwf und tokio als Abhängigkeiten hinzu:
cargo add rwf  
cargo add tokio@1 --features full  
  • Das Erstellen einer App ist so einfach wie folgt:
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();  
}  

Status

  • Rwf befindet sich in einer frühen Entwicklungsphase und ist noch nicht produktionsreif. Viele Funktionen und Teile der Dokumentation sind unvollständig.

Zusammenfassung von GN⁺

  • Rwf ist ein leistungsfähiges Framework zum Erstellen von Webanwendungen mit Rust und bietet auf Basis des MVC-Musters zahlreiche Funktionen, mit denen sich schnelle und sichere Web-Apps einfach entwickeln lassen.
  • Da es sich noch in einer frühen Entwicklungsphase befindet, ist der Einsatz in Produktionsumgebungen möglicherweise schwierig, aber Funktionen und Dokumentation sollen fortlaufend erweitert werden.
  • Es ist nützlich für Entwickler, die Webanwendungen mit Rust entwickeln möchten, und kann auch hilfreich sein, wenn eine Migration von bestehenden Frameworks wie Django oder Flask in Betracht gezogen wird.
  • Andere Rust-basierte Web-Frameworks mit ähnlichem Funktionsumfang sind unter anderem Actix und Rocket.

1 Kommentare

 
GN⁺ 2024-10-23
Hacker-News-Kommentare
  • Es wird betont, dass die Nutzung der Standardbibliothek von Go die Abhängigkeit von komplexen Web-Frameworks verringert, die Sicherheit erhöht und die Wartung erleichtert.

    • Dazu wird die Ansicht geäußert, dass Web-Frameworks in Rust weiterhin nützlich sein können.
  • Aus Erfahrungen mit Web-MVC-Frameworks wurde die Lehre gezogen, dass Business-Logik nicht in die Model-Schicht gehört.

    • Eine Service-Schicht wird nachdrücklich empfohlen; vorgeschlagen wird, sie mit einem Gem wie Interactor als Command-Objekte umzusetzen.
  • Es wird erwartet, dass ein REST-Framework Swagger-Definitionen automatisch erzeugen kann.

    • Es wird gefragt, warum man statt bestehender ORMs oder Template-Engines Eigenentwicklungen vorgenommen hat.
  • Die Wahl des Namens für das neue Framework wird als gute Methode bewertet, um in Suchergebnissen weit oben zu erscheinen.

    • Es wird erwähnt, dass es wichtig ist, neue Ideen zu erkunden.
  • Es besteht Interesse an einer Migration von Python zu Rust.

    • Vorgeschlagen wird, dies im großen Maßstab über einen Reverse Proxy zu handhaben.
  • Es wird davor gewarnt, dass es zunächst zwar sinnvoll erscheinen mag, ein ORM als integrierte Funktion eines Web-Frameworks aufzunehmen, man aber mit der Zeit daraus ein eigenständiges Projekt machen oder ein anderes ORM verwenden wollen könnte.

  • Es wird erwähnt, dass mehr meinungsstarke Frameworks wie Rails und Django gebraucht werden.

  • Es wird Vorfreude auf die Veröffentlichung eines Frameworks geäußert, das eine wichtige Lücke in Rust schließt.

  • Aus Entwicklungserfahrungen mit Django wurde der Wert von MVC erkannt, und es wird erwähnt, dass man sich das neue Framework ansehen werde.

  • Nach der Bewertung verschiedener Frameworks für Backend-Arbeit mit Rust wurde Axum als am geeignetsten eingeschätzt.

    • Das neue Framework wird als perfekt passend zum Kriterium „batteries included, aber nicht zu vorschreibend“ bewertet.