Domain driven design 在DDD中放置实体类和实用程序类的位置

Domain driven design 在DDD中放置实体类和实用程序类的位置,domain-driven-design,Domain Driven Design,我是DDD的新手,希望澄清一些疑问。感谢您的帮助 在DDD模型中,程序集引用层次结构是自上而下的,这意味着模型可以引用基础结构,而不应该反过来。现在,如果我们在模型组件中声明所有类,那么在这种情况下,基础结构类将必须引用模型组件,以获取数据访问层(DAL)中具体存储库实现的类信息。此外,模型组件必须引用基础结构组件才能访问DAL层。我对此感到困惑!正确的方法应该是什么 我们应该在模型层或基础设施DAL层中拥有Repository和UnitOfWork接口吗?我们应该在模型层中拥有接口,但在基础设

我是DDD的新手,希望澄清一些疑问。感谢您的帮助

  • 在DDD模型中,程序集引用层次结构是自上而下的,这意味着模型可以引用基础结构,而不应该反过来。现在,如果我们在模型组件中声明所有类,那么在这种情况下,基础结构类将必须引用模型组件,以获取数据访问层(DAL)中具体存储库实现的类信息。此外,模型组件必须引用基础结构组件才能访问DAL层。我对此感到困惑!正确的方法应该是什么

  • 我们应该在模型层或基础设施DAL层中拥有Repository和UnitOfWork接口吗?我们应该在模型层中拥有接口,但在基础设施层中拥有实际的DAL实现吗

  • 如果我们需要包含一些通用实用程序函数或类的其他程序集(如自定义CommandMessage类等,以便在企业服务总线体系结构中进行通信),那么我们将把所有这些东西放在何处,首选名称空间应该是什么(例如
    CompanyName.Model.Common

  • 模型程序集不应引用基础结构程序集。反之亦然。模型程序集只声明所需的接口。您应该从基础结构部件中引用模型部件。并实现这些接口。可能有许多不同的程序集,具有模型所需的接口实现。稍后,您将通过依赖项注入提供接口实现
  • 如上所述,应该在模型组装中声明存储库和工作单元
  • 在我看来,在企业服务总线体系结构中进行通信就像是基础设施任务。我认为这不是模型的一部分