路线图
核心原则:功能通过约定自动发现或配置激活。用户永远不需要改变
ISharkEndpoint编码模式,不需要实现新接口,不需要在业务代码中调用框架 API。
v0.4.0 — 2026-06-28 ✅
- 废弃
[SharkEndpoint]/[SharkMethod]/SharkHttpMethod及相关反射基础设施 — 迁移到ISharkEndpoint - 启动配置自检 —
ConfigurationValidator在AddShark()时校验 JWT、多租户配置 - 优雅关闭 — K8s 友好的 SIGTERM 处理:/healthz → 503,排空请求,然后关闭
- 审计日志批量/异步写入 — Channel 缓冲 + 后台刷新(
AsyncWrite、BatchSize、FlushInterval) - 幂等性分布式存储 —
IIdempotencyStore可通过TryAddSingleton或IdempotencyStoreFactory替换 - 限流分布式存储 —
IDistributedRateLimitStore+SharkRateLimiterMiddleware,默认MemoryRateLimitStore,RateLimitStoreFactory - Sharkable.Cache.Redis NuGet 插件 — Redis 版
IIdempotencyStore+IDistributedRateLimitStore,AddSharkableRedis()
Phase 1 — 现有功能强化(零侵入)
| # | 功能 | 价值 | 侵入度 | 状态 |
|---|---|---|---|---|
| 1 | 启动配置自检 | 减少踩坑 | 零 — 自动运行 | ✅ v0.4.0 |
| 2 | 优雅关闭 | 生产必备 | 零 — K8s 原生 | ✅ v0.4.0 |
| 3 | 审计日志批量/异步 | 性能优化 | 零 — 仅内部机制 | ✅ v0.4.0 |
| 4 | 编译时路由冲突检测 | 质量保障 | 零 — NuGet 包自带 |
Phase 2 — 可观测性
| # | 功能 | 价值 | 侵入度 | 状态 |
|---|---|---|---|---|
| 5 | 内置分布式追踪 | 可观测性 | 零 — ActivitySource | ✅ |
| 6 | 可扩展健康检查 — 结构化JSON /healthz,自定义检查,自动JWT检测,运行时长+版本 | 运维 | 仅配置 | ✅ |
| 7 | 轻量性能面板 | 调试 | 仅配置 | ✅ |
Phase 3 — 分布式 / 集群支持
| # | 功能 | 价值 | 侵入度 | 状态 |
|---|---|---|---|---|
| 8 | 幂等性分布式存储接口 | 集群高可用 | 仅配置 | ✅ v0.4.0 |
| 9 | 多租户数据源隔离 — ITenantDataSource scoped服务,ConfigureDataSource() 按租户路由连接串 | SaaS | 仅配置 | ✅ |
| 10 | 限流分布式存储接口 | 集群高可用 | 仅配置 | ✅ v0.4.0 |
| 11 | 自适应限流 | 鲁棒性 | 仅配置 |
Phase 4 — 开发者体验 & 打磨
| # | 功能 | 价值 | 侵入度 |
|---|---|---|---|
| 12 | ETag / 304 条件请求 | 缓存优化 | 零 — 自动 |
| 13 | 响应压缩 | 性能 | 仅配置 |
| 14 | OpenAPI 示例生成 | 开发体验 | 零 — 自动 |
| 15 | 错误消息本地化 | 国际化 | 仅配置 |
| 16 | AutoCrud AOT 零 rd.xml | AOT 体验 | 零 — Source Generator |
| 17 | 软删除全局过滤器 | 数据层 | 实体标记接口 |
| 18 | BackgroundService 增强 | 后台任务 | 零 — 自动 |
| 19 | ProblemDetails (RFC 7807) 兼容 | 互操作性 | 零 — 自动 |
Phase 5 — 生命周期 & 启动完整性
| # | 功能 | 价值 | 侵入度 |
|---|---|---|---|
| 20 | ConfigureOnStarted / ConfigureOnStopped 回调 — 应用就绪和关闭清理的钩子(预热缓存、关闭连接、刷新缓冲区) | 启动/关闭控制 | 仅配置 |
| 21 | 独立存活探针 /livez — 始终返回 200 的 k8s liveness 端点,与 /healthz readiness 分离 | K8s 原生运维 | 零 — 开启健康检查后自动 |
| 22 | 启动就绪闸门 — /healthz 在所有 OnStarted 回调完成前返回 503,防止初始化未完成就接入流量 | 生产安全 | 零 — 内部机制 |
| 23 | 预热 / 异步初始化 — IWarmupService 接口 + ConfigureWarmup(Func<IServiceProvider, CancellationToken, Task>[]),在 app 启动后、就绪探针变绿前执行 | 冷启动优化 | 仅配置 |
| 24 | 启动 DI 验证 — 可选 ValidateOnStart 标志,启动时主动解析所有注册的服务,提前捕获缺失的 DI 注册 | 快速失败 | 仅配置 |
| 25 | 启动横幅 — 在 UseShark() 时输出框架版本、已启用功能和关键配置 | 运维 | 零 — 自动 |
| 26 | 中间件管道注入点 — app.UseShark(beforeAuth: mw => ..., afterAuth: mw => ...) 在精确位置插入自定义中间件 | 管道控制 | 仅配置 |
| 27 | 预创单例 — [SingletonService(Eager = true)] 标志,在启动时预先创建单例实例而非首次解析时创建 | 冷启动优化 | 属性选项 |
已排除(高侵入性)
| 功能 | 原因 |
|---|---|
| CQRS-lite (ICommand/IQuery) | 需重写每个端点类 |
| 模块化 ISharkModule | 需大面积重构 |
| 强类型 ID (OrderId, UserId) | 需改所有方法签名 |
| 智能枚举 | 需改所有枚举定义 |
| 缓存标签失效 | 需改写入端点 |
| API 测试运行器 | 需写新测试代码 |
| 轻量网关 | 需建新项目 |
| Source Generator SDK | 需新包 + 客户端代码 |