适用场景与边界
理想适用场景
1. 企业级 WebApi 后端
需要模块化、可测试、团队可协作的 API 服务:
- RESTful / JSON API - 多模块业务(用户、订单、内容管理等) - 需要认证授权、缓存、限流等横切能力
rust-webx 的分层约定(contracts / handlers / domain / services)天然适合这类项目。
2. ASP.NET Core 团队迁移到 Rust
若你的团队熟悉以下概念,学习曲线将非常平缓:
| ASP.NET Core | rust-webx | |-------------|-------------| | `IRequest<T>` (MediatR) | `IRequest<T>` + `IRequestHandler<T,R>` | | `IHostedService` | `IHostedService` | | `appsettings.json` | `appsettings.json` + `AppOptions` | | Middleware Pipeline | `IMiddleware` 管道 | | `[Authorize]` | `#[authorize]` |
3. AI 辅助 / 模块化开发
每个 API 端点由独立的 Request 结构体 + Handler 组成,**模块边界清晰**:
handlers/user/
get_user.rs → GetUserRequest + GetUserHandler
create_user.rs → CreateUserRequest + CreateUserHandler
AI 生成的新模块可直接插入 `handlers/` 目录,框架通过编译时扫描自动发现,无需修改中央路由文件。
4. 全栈单体应用(API + SPA)
Host::builder()
.use_spa("wwwroot") // 托管 React/Vue/Svelte 构建产物
.add_authentication()
.build()
一个进程同时服务 API 与前端静态资源,适合作品集、管理后台、中小型产品。
不太适合的场景
极简 API 或原型验证
若只需 2-3 个端点、无 DI 需求、追求最小依赖,Axum 单文件方案更轻量。
超高吞吐、极致延迟敏感
框架增加了 DI 解析与 Mediator 调度层。对于纳秒级延迟要求的场景,需评估开销(参见 [性能优化技巧](../14-best-practices/performance-tips.md))。
WebSocket 为主的应用
当前版本以 HTTP/JSON 为核心。WebSocket 需自行集成,非框架一等公民。
多进程微服务编排
框架解决**单服务内的架构问题**,不包含服务网格、分布式追踪等平台能力(可集成 OpenTelemetry 等)。
决策清单
在选用 rust-webx 前,回答以下问题:
| 问题 | 倾向选用 rust-webx | |------|---------------------| | 端点数量 > 10? | ✅ | | 需要 DI 注入数据库/缓存/外部服务? | ✅ | | 团队有 ASP.NET / MediatR 背景? | ✅ | | 需要 JWT + 角色/权限授权? | ✅ | | 需要 OpenAPI 文档? | ✅ | | 只是学习 Rust 的第一个 HTTP 程序? | ⚠️ 可先 Axum,再迁移 | | 端点 < 3 且无状态? | ❌ 考虑更轻量方案 |
规模参考
| 项目规模 | 推荐结构 | |---------|---------| | 小型(< 20 端点) | 单 crate,`src/contracts` + `src/handlers` | | 中型(20-100 端点) | 单 crate 多模块,或 workspace 拆分 domain | | 大型(> 100 端点) | workspace 多 crate,共享 `contracts` crate |
Docbit 作品集站点属于**中型全栈单体**的典型范例(参见 [第十五章](../15-case-study/INDEX.md))。
小结
rust-webx 面向**需要工程化、模块化 WebApi 开发**的场景。它不是万能钥匙,但在其适用范围内,能显著降低架构决策成本,让团队把精力集中在业务逻辑上。
下一节:[生态与 Crate 全景](ecosystem-overview.md)