Domain-Driven Design 领域驱动设计
领域驱动设计是客户需求驱动设计
什么是客户需求
领域产生
领域产生的实质:人和物关系
商品领域中包含哪些
商品两类数据 1、商品构造。2、商品操作。
领域驱动
把商品领域作为一个整体,给用户使用
为什么要使用领域驱动设计(DDD)
主要目的:解决复杂性系统需求问题
复杂性系统如何使用DDD
复杂性系统为什么要使用DDD(4层架构)
电商系统三层架构
电商系统DDD架构
复杂电商系统中如何落地DDD
落地DDD-领域层
落地DDD-应用层
落地DDD-显示层
落地DDD-基础设施层
EntityFrameworkCore
使用ABP vNext落地DDD
ABP vNext层次依赖关系
1、Domain.Shared 所有项目直接或间接依赖此项目.此项目中的所有类型都可以被其它项目所引用.
2、Domain 仅依赖Domain.Shared项目,因为Domain.Shared本就属于领域层的一部分.例如,Domain.Shared项目中的枚举类型 IssueType 被Domain项目中的Issue实体所引用.
3、Application.Contracts 依赖Domain.Shared项目,可以在DTO中重用Domain.Shared中的类型.例如,Domain.Shared项目中的枚举类型 IssueType 同样被Contracts项目中的CreateIssueDtoDTO所引用.
4、Application 依赖Application.Contracts项目,因为此项目需要实现应用服务的接口及接口使用的DTO.另外也依赖5、
5、Domain项目,因为应用服务的实现必须依赖领域层中的对象.
6、EntityFrameworkCore 依赖Domain项目,因为此项目需要将领域对象(实体或值对象)映射到数据库的表,另外还需要实现Domain项目中的仓储接口.
7、HttpApi 依赖Application.Contracts项目,因为Controllers需要注入应用服务.
8、HttpApi.Client 依赖Application.Contracts项目,因为此项目需要是使用应用服务.
9、Web 依赖HttpApi项目,因为此项目对外提供HTTP APIs.另外Pages或Components 需要使用应用服务,所以还间接依赖了Application.Contracts项目