4

域模型和存储库可以在单独的 dll 中吗?

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

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

我一定是误解了上述一个或多个概念。

任何澄清将不胜感激,因为这一直困扰我一段时间,谢谢。

4

1 回答 1

5

我认为您根本不应该让您的域程序集引用您自己的应用程序中的任何内容。它应该是最里面的集会,它对外面的任何东西都一无所知。它只是坐在那里并且知道域逻辑。

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

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

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

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

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

询问您是否有任何问题。

于 2010-08-03T07:00:32.900 回答