- 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
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.
Aus Erfahrungen mit Web-MVC-Frameworks wurde die Lehre gezogen, dass Business-Logik nicht in die Model-Schicht gehört.
Es wird erwartet, dass ein REST-Framework Swagger-Definitionen automatisch erzeugen kann.
Die Wahl des Namens für das neue Framework wird als gute Methode bewertet, um in Suchergebnissen weit oben zu erscheinen.
Es besteht Interesse an einer Migration von Python zu Rust.
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.