SuperAPI AI 工具集

dotnet-architecture-patterns

通用与其它

查看项目

更新于 10-16 03:07

技能介绍

用途:为 .NET 应用(尤其是 Minimal API)提供可扩展的架构组织方案,覆盖从代码组织到请求处理、缓存与幂等性的实践模式。

主要能力:

  1. 垂直切片架构:按功能而非技术层组织代码,每个切片自带请求/响应 DTO、验证器、处理器与端点,降低耦合、便于导航和独立测试。示例目录结构按 Features/Orders/CreateOrder/ 划分。
  2. Minimal API 规模化组织:使用 MapGroup 构建路由组,统一标签与过滤器;每个端点放在独立静态类中提供单一 Handle 方法,并用 WithName、Produces、ProducesValidationProblem 等声明元数据。
  3. 请求管道:使用 IEndpointFilter 实现路由级横切关注点(如 ValidationFilter<TRequest>);标准中间件顺序为全局异常处理、状态码页、限流、认证、授权,之后才是端点路由。
  4. 错误处理:基于 Problem Details(RFC 9457)统一错误响应,可自定义 traceId;业务失败建议使用 Result 类型(Success/NotFound/ValidationFailed/Conflict)而非抛异常,并在端点映射为对应 HTTP 状态码。
  5. 验证策略:默认使用 Data Annotations 与 MiniValidation,.NET 10+ 可用 AddValidation() 源生成器;复杂规则可选用 FluentValidation,通过程序集扫描注册并配合端点过滤器。
  6. 缓存:输出缓存(AddOutputCache、CacheOutput、EvictByTagAsync)、分布式缓存(StackExchangeRedis 配合 IDistributedCache)、.NET 9+ 的 HybridCache 两级缓存并提供防击穿。
  7. 幂等性:使用 Idempotency-Key 头,按“路由+用户”作用域键,先原子占位(数据库唯一约束)再执行,存储序列化响应体以便重放,重复请求返回 409。Outbox 模式文中仅提及但细节未提供。

适用场景:需要规模化组织 .NET API、统一错误与验证、引入缓存以及防止重复提交的服务端项目。

限制:依赖项注入、async/await、项目脚手架、测试策略不在范围内,文中指向对应技能;Redis 连接字符串等配置需自行提供;部分后续内容(如 Outbox 细节)在给定资料中被截断,暂未完整提供;文中未说明许可、价格或平台支持信息。