用途:为 .NET 8 后端服务提供一套有主见的架构约定,适用于搭建或评审服务结构。语言层面的约定另见 csharp 技能。
分层与依赖方向:依赖只能向内。Domain 只含实体、值对象、领域事件与接口,不依赖任何其他层;Application 含用例、CQRS 处理器、DTO、验证器,仅依赖 Domain;Infrastructure 含 EF Core、外部 API 及 Domain 接口实现,依赖 Domain 与 Application;Api 含端点、DI 装配与中间件,依赖以上全部。判断边界是否完好的方法:若 Domain 除 BCL 外无任何包引用即可编译,则边界完整。
实体不变量:实体自行维护不变量,使用私有 setter、供 EF Core 物化用的私有无参构造函数,以及会做校验的静态工厂方法。公开 setter 会让任何层把实体置于非法状态。
约定:读写确实不同(模型、一致性、扩展性不同)时使用 MediatR 实现 CQRS,CRUD 服务上采用它只是仪式,应由领域需求驱动而非默认采用。横切关注点放在管道行为中而非处理器内,验证、日志、事务写一次即对所有处理器生效。Minimal API 用 MapGroup 按功能区域分文件,避免单个 Program.cs 堆积所有端点。验证放在 Application 边界(行为中的 FluentValidation),使各入口调用用例时规则一致。DbContext 留在 Infrastructure,置于 Application 层拥有的接口之后。密钥不得写入 appsettings.json,本地用 user-secrets,生产用环境变量或保险库。从一开始就加入健康检查(/health/live、/health/ready)与带关联 ID 的结构化日志;就绪探针可检查数据库与下游 API,存活探针只能检查进程本身是否存活。容器以非 root 用户运行,添加 USER 行。集成测试使用 WebApplicationFactory 配合真实数据库(Testcontainers)。仅在启动时间或体积确有必要时使用 AOT,因其排除运行时反射。
限制:资料未提供该技能的安装命令、收费方式与具体平台支持信息。