Abp Pro Layered

本项目的分层 DDD 开发规则。新增或修改实体、领域服务、DTO、应用服务、控制器、权限或业务模块时使用。

wangjunzzz e38330e 1.6 KB Updated

File contents

ABP Pro 分层开发

代码归属

  • *.Domain.Shared:常量、枚举、本地化、权限和共享契约。
  • *.Domain:聚合、值对象、领域服务、仓储接口和领域规则。
  • *.Application.Contracts:DTO 和应用服务接口。
  • *.Application:用例编排、授权和 Mapster 映射。
  • *.EntityFrameworkCore*.FreeSqlRepository:持久化实现。
  • *.HttpApi:控制器和 HTTP 层代码。

模块代码放在所属模块中,不要把模块业务规则放入主服务。

新功能流程

  1. 在聚合或领域服务中定义业务不变量和状态变更。
  2. Domain.Shared 中添加常量、枚举、本地化和权限名称。
  3. 只有通用仓储无法清晰表达查询时,才增加自定义仓储方法。
  4. Application.Contracts 定义输入、输出 DTO 和服务契约。
  5. Application 实现用例、授权和 Mapster 映射。
  6. 只有需要明确 HTTP 接口时才增加控制器。
  7. 增加针对领域规则或应用用例的测试。

禁止事项

  • 不在控制器或仓储中编写业务规则。
  • 不直接把实体作为 API DTO 暴露。
  • 不绕过聚合方法直接修改聚合内部状态。
  • 不在领域层或应用层依赖具体数据库实现。

模板

可复用模块以 templates/pro-module 为准;标准服务模板以 templates/pro-nuget/service 为准。修改模板时必须同步现有项目的分层和包版本约定。

wangjunzzz/abp-vnext-pro/tree/main/.codex/skills/abp-pro-layered commit e38330e015

Frequently asked questions

npx skillmds@latest add wangjunzzz/abp-pro-layered