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

时间:2013-01-09 11:26:08

标签: domain-driven-design

我是DDD的新手并希望澄清一些疑问。任何帮助表示赞赏。

  1. 在DDD模型中,程序集引用层次结构自上而下,这意味着Model可以引用Infrastructure,而不应该是其他方式。现在,如果我们在Model程序集中声明所有类,那么在这种情况下,Infrastructure类必须引用Model Assembly以获取数据访问层(DAL)中Concrete存储库实现的类信息。模型组件还必须引用Infrastructure Assembly来访问DAL层。我对此感到困惑!什么应该是正确的方法?

  2. 我们是否应该在Model层或Infrastructure DAL层中具有Repository和UnitOfWork接口,就像在Model层中具有接口但在Infrastructure层中具有实际DAL实现?

  3. 如果我们需要包含一些通用实用程序函数或类的其他程序集(如自定义CommandMessage类等,以便在Enterprise Service Bus体系结构中进行通信),那么我们将所有这些内容放在哪里以及应该是哪个首选命名空间(For例如CompanyName.Model.Common)?

1 个答案:

答案 0 :(得分:2)

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