这一节主要讲工程的结构和应用的分层。
分层
- 领域模型层
- 基础设施层
- 应用层
- 共享层
GeekTime.Core
:这里我们主要是承载基础的简单的类型,比如异常和一些帮助类GeekTime.Domain.Abstractions
:领域的抽象层,在领域模型可以定义一些基类或者接口,或者领域事件的接口、领域事件处理的接口。还有Entity的接口和Entity的基类GeekTime.Infrastructure.Core
:基础设施核心层是指我们可以对我们的仓储,还有我们的EFContext定义一些共享的代码
这些包的话,我们实际上是在不同的项目里面都可以共享的,所有建议将这些代码通过私有NuGet仓库的方式存储,然后其它工程可以使用Nuget包来直接引用即可。
Domain
层就是我们定义领域模型的地方,这里面我们会有不同的聚合,然后还有领域事件。我们不同的聚合下面就是我们的领域模型。
总结
- 领域模型专注业务的设计,不以来仓储等基础设置层
- 基础设施的仓储层仅负责领域模型的取出和存储
- 使用CQRS模式设计应用层
- Web API是面向前端的交互的接口,避免依赖领域模型
- 将共享代码设计为共享包,使用私有NuGet仓库分发管理