跳到主要内容
版本:0.6.0

路线图

核心原则:功能通过约定自动发现或配置激活。用户永远不需要改变 ISharkEndpoint 编码模式,不需要实现新接口,不需要在业务代码中调用框架 API。

v0.4.0 — 2026-06-28 ✅

  • 废弃 [SharkEndpoint] / [SharkMethod] / SharkHttpMethod 及相关反射基础设施 — 迁移到 ISharkEndpoint
  • 启动配置自检ConfigurationValidatorAddShark() 时校验 JWT、多租户配置
  • 优雅关闭 — K8s 友好的 SIGTERM 处理:/healthz → 503,排空请求,然后关闭
  • 审计日志批量/异步写入 — Channel 缓冲 + 后台刷新(AsyncWriteBatchSizeFlushInterval
  • 幂等性分布式存储IIdempotencyStore 可通过 TryAddSingletonIdempotencyStoreFactory 替换
  • 限流分布式存储IDistributedRateLimitStore + SharkRateLimiterMiddleware,默认 MemoryRateLimitStoreRateLimitStoreFactory
  • Sharkable.Cache.Redis NuGet 插件 — Redis 版 IIdempotencyStore + IDistributedRateLimitStoreAddSharkableRedis()

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 — 开发者体验 & 打磨

#功能价值侵入度
12ETag / 304 条件请求缓存优化零 — 自动
13响应压缩性能仅配置
14OpenAPI 示例生成开发体验零 — 自动
15错误消息本地化国际化仅配置
16AutoCrud AOT 零 rd.xmlAOT 体验零 — Source Generator
17软删除全局过滤器数据层实体标记接口
18BackgroundService 增强后台任务零 — 自动
19ProblemDetails (RFC 7807) 兼容互操作性零 — 自动

Phase 5 — 生命周期 & 启动完整性

#功能价值侵入度
20ConfigureOnStarted / 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需新包 + 客户端代码