应用程序层和基础架构层之间的循环引用问题,.Net Core。

3
我正在开发一个包含三个层级的应用程序:应用程序、基础设施和领域。 应用程序层是WebApi,其余是类库。 基础设施层依赖于领域和应用程序层。 应用程序层仅引用领域层。
应用程序层定义了基础设施层实现的接口。
应用程序引用领域。 基础设施引用领域。 基础设施引用应用程序。
然而,现在我正在通过Startup类配置依赖注入,表示应用程序层的项目需要引用基础设施项目,这会导致循环依赖。
有谁可以帮助我解决这个问题吗?
感谢大家!

这里有一个问题:应用层定义了基础设施层实现的接口 - 为什么?将你的接口保留在基础设施中 - 应用层应该负责连接事物(依赖注入容器)。 - undefined
如果我在应用层使用LoggerService,例如,它的接口和实现应该在基础设施层吗? - user11033188
是的,那样做是有道理的。 - undefined
正确的方法是像这篇文章一样吗?(请参见图片)https://learn.microsoft.com/pt-br/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/ddd-oriented-microservice - user11033188
没有对错之分,只要适合你和你的项目就行。试试这个 - https://lostechies.com/jimmybogard/2012/08/30/evolutionary-project-structure/ - undefined
1
相关链接:https://dev59.com/oWkx5IYBdhLWcg3wAvqn - undefined
2个回答

2

应用层定义基础设施层实现的接口。

这很可能是问题的主要原因。

如果您遵循依赖反转原则,那么正如APPP所说,“客户端[...]拥有抽象接口”。

对于像OP描述的三层应用程序架构,这意味着接口应该在领域模型中定义,而不是在顶层应用程序层中定义。 在我的博客这里上阅读更多关于分层应用程序架构和依赖注入的内容。


0

不要在WebApi或其他可执行项目中定义接口,无论是什么项目都是如此。任何尝试实现这种接口的类库都必须依赖整个WebApi项目!你真的不想要那样。所以在这种情况下,我会把这些接口分离到它们自己的类库中,通过这样做你将打破这个循环。我认为将它们移动到基础架构中会破坏控制反转的整个概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接