应用程序和基础层之间的循环引用.Net Core
Circular reference between app and infra layers .Net Core
我正在开发一个具有三层的应用程序:应用程序、基础结构和域。
应用层是一个WebApi,其余都是Class库。
基础设施层依赖于领域和应用层。
应用层只引用领域层
应用层定义基础设施层实现的接口。
应用程序引用域。
Infra 参考域。
基础设施参考应用程序
但是,现在我在配置依赖注入,viaStartupclass,代表应用层的项目需要引用基础设施项目,这就造成了循环依赖。
谁能帮我解决这个问题?
感谢大家!
只是不要为此在 WebApi 或任何其他可执行项目中定义接口。任何试图实现此类接口的 class 库都被迫依赖于整个 WebApi 项目!你真的不想要那个。所以在这种情况下,我会将这些接口分离到它们自己的 class 库中,这样你就可以打破循环。我认为将它们移动到基础架构会破坏控制反转的整个概念
The App layer defines interfaces that the infrastructure layer implements.
这是问题最可能的原因。
如果你按照Dependency Inversion Principle, then, as APPP的说法,"clients [...] own the abstract interfaces"。
对于像 OP 中描述的那样的 three-layer 应用程序架构,这意味着接口应该在域模型中定义,而不是在顶级应用程序层中。在我的博客 here.
上阅读有关分层应用程序架构和依赖注入的更多信息
我正在开发一个具有三层的应用程序:应用程序、基础结构和域。 应用层是一个WebApi,其余都是Class库。 基础设施层依赖于领域和应用层。 应用层只引用领域层
应用层定义基础设施层实现的接口。
应用程序引用域。 Infra 参考域。 基础设施参考应用程序
但是,现在我在配置依赖注入,viaStartupclass,代表应用层的项目需要引用基础设施项目,这就造成了循环依赖。
谁能帮我解决这个问题?
感谢大家!
只是不要为此在 WebApi 或任何其他可执行项目中定义接口。任何试图实现此类接口的 class 库都被迫依赖于整个 WebApi 项目!你真的不想要那个。所以在这种情况下,我会将这些接口分离到它们自己的 class 库中,这样你就可以打破循环。我认为将它们移动到基础架构会破坏控制反转的整个概念
The App layer defines interfaces that the infrastructure layer implements.
这是问题最可能的原因。
如果你按照Dependency Inversion Principle, then, as APPP的说法,"clients [...] own the abstract interfaces"。
对于像 OP 中描述的那样的 three-layer 应用程序架构,这意味着接口应该在域模型中定义,而不是在顶级应用程序层中。在我的博客 here.
上阅读有关分层应用程序架构和依赖注入的更多信息