这一节主要讲工程的结构和应用的分层。

    分层

    • 领域模型层
    • 基础设施层
    • 应用层
    • 共享层

    GeekTime.Core:这里我们主要是承载基础的简单的类型,比如异常和一些帮助类
    GeekTime.Domain.Abstractions:领域的抽象层,在领域模型可以定义一些基类或者接口,或者领域事件的接口、领域事件处理的接口。还有Entity的接口和Entity的基类
    GeekTime.Infrastructure.Core:基础设施核心层是指我们可以对我们的仓储,还有我们的EFContext定义一些共享的代码
    image.png
    这些包的话,我们实际上是在不同的项目里面都可以共享的,所有建议将这些代码通过私有NuGet仓库的方式存储,然后其它工程可以使用Nuget包来直接引用即可。

    Domain层就是我们定义领域模型的地方,这里面我们会有不同的聚合,然后还有领域事件。我们不同的聚合下面就是我们的领域模型。

    总结

    • 领域模型专注业务的设计,不以来仓储等基础设置层
    • 基础设施的仓储层仅负责领域模型的取出和存储
    • 使用CQRS模式设计应用层
    • Web API是面向前端的交互的接口,避免依赖领域模型
    • 将共享代码设计为共享包,使用私有NuGet仓库分发管理