域模型和存储库可以分开进入dll吗?

Fik*_*kre 4 domain-driven-design ddd-repositories n-tier-architecture

域模型和存储库可以在不同的dll中吗?

在3层架构中,我想我会将域模型放在业务层中,将存储库放在数据访问层中.

我感到困惑,因为我的理解是域模型使用存储库,而存储库应该从域模型返回对象,这将导致循环依赖.

我必须误解一个或多个上述概念.

非常感谢任何澄清,因为这一直困扰我一段时间,谢谢.

asg*_*las 5

我认为您根本不应该让您的域程序集引用您自己的应用程序中的任何内容.它应该是最里面的组件,完全不知道外面的任何东西.它只是坐在那里,知道域逻辑.

您的域模型不应该使用存储库,应用程序服务应该.(如果域实体实际上需要使用存储库,则应该从应用程序服务中注入.有些人会争辩说,这不应该是必要的 - 我也这么认为).

尝试以这种方式查看它:您有一个应用程序服务,这是您的客户端/前端/控制器可以使用域的主要方式.应用程序服务定义了可以在应用程序上执行的操作.

应用程序服务使用存储库来加载它需要处理的域对象,在域对象上调用必要的方法并返回结果(如果操作返回结果).域对应用程序服务或存储库一无所知.

开始以这种方式组织应用程序的好方法是查看这一系列的博客文章:http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

并看看依赖注入,它可以帮助您解决其他问题,看起来,你会有一个循环引用.

问你是否有任何问题.