- Rwfは、RustでWebアプリケーションを構築するための包括的なフレームワーク
- 古典的なMVCパターン(モデル・ビュー・コントローラー)を採用しており、高速で安全なWebアプリを簡単に構築するために必要なものをひととおり標準で提供
機能概要
- HTTPサーバー
- PostgreSQLクエリを簡単に記述できる、使いやすいORM
- 動的テンプレート
- 認証と組み込みユーザーセッション
- ミドルウェア
- バックグラウンドジョブとスケジュールジョブ
- データベースマイグレーション
- JSONシリアライズをサポートする組み込みRESTフレームワーク
- WebSocketsサポート
- 静的ファイルホスティング
- バックエンド主導のSPA構築のためのHotwired Turboとの緊密な統合
- 環境ごとの設定
- ロギングとメトリクス
- CLI
- Django/Flaskアプリからの移行向けWSGIサーバー
クイックスタート
- Rwfをスタックに追加するには、Rustのバイナリアプリケーションを作成し、依存関係に
rwfとtokioを追加する:
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でWebアプリケーションを構築するための強力なフレームワークで、MVCパターンを採用し、高速で安全なWebアプリを簡単に開発できる多様な機能を提供する。
- 初期開発段階のため、プロダクション環境での利用は難しい可能性があるが、さまざまな機能とドキュメントは継続的に更新される予定。
- RustでWebアプリケーションを開発したい開発者にとって有用であり、DjangoやFlaskのような既存フレームワークからの移行を検討する場合にも役立つ可能性がある。
- 類似機能を提供する他のRustベースのWebフレームワークとしては、ActixやRocketなどがある。
1件のコメント
Hacker Newsの意見
Go言語の標準ライブラリを使うことで、複雑なWebフレームワークへの依存を減らし、セキュリティを高め、保守しやすくなることを強調している
Web MVCフレームワークの利用経験から、ビジネスロジックをモデルレイヤーに置くべきではないという教訓を得た
RESTフレームワークはSwagger定義を自動生成できるべきだと期待している
新しいフレームワークの名前の選び方は、検索結果の上位に表示される良い方法だと評価している
PythonからRustへの移行に関心を示している
ORMをWebフレームワークの組み込み機能として含めるのは、最初は合理的に見えるかもしれないが、時間が経つと独立したプロジェクトになったり、別のORMを使いたくなったりする可能性があると警告している
RailsやDjangoのような、強い意見を持つフレームワークがもっと必要だと述べている
Rustにおける大きな空白を埋めるフレームワークの登場に期待感を示している
Djangoの開発経験を通じてMVCの価値を理解し、この新しいフレームワークを見てみるつもりだと述べている
Rustバックエンド開発向けのさまざまなフレームワークを評価した結果、Axumが最も適していると判断している