gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:59:54 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

您的域模型不应该使用存储库,应用程序服务应该。
(如果域实体确实需要使用存储库,则应该从应用程序服务中注入(inject)。Some people would argue, that this should not be necessary though - 我也这么认为)。

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

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

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

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

询问您是否有任何问题。

关于domain-driven-design - 域模型和存储库可以在单独的 dll 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3386144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com