I have UI, 应用, Domain and 基础设施 Layers.
In my 基础设施图层参考Domain and 应用层注册两者的服务接口Ninject.
但我需要在我的应用将服务分层基础设施层,然后我需要引用基础设施层在我的应用 Layer.
问题是基础设施图层参考应用图层以及我何时参考基础设施层入应用图层显示以下错误:
无法添加对“基础设施”的引用。添加此项目作为引用会导致循环依赖。
基础设施服务契约应在使用它们的层(域和应用程序)中定义,但在基础设施中实现。看一眼依赖倒置原则 http://en.wikipedia.org/wiki/Dependency_inversion_principle and 洋葱架构 http://jeffreypalermo.com/blog/the-onion-architecture-part-1/。基础设施层应该依赖于App和Domain。您的域和应用程序不应依赖于基础设施。它们应该依赖于用自己的术语定义的抽象。你可能会发现这个answer https://stackoverflow.com/questions/7306109/having-trouble-putting-real-world-logic-into-the-ddd-domain-layer/7311521#7311521有趣的。该抽象的实际实现应该在应用程序启动时注入所谓的成分根 http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx.
例如,在您的应用程序中,您可以定义和接口如下:
ICanNotifyUserOfSuccessfullRegistration
基础设施层将引用应用程序并将使用 SMTP 或 SMS 类实现此接口:
class SmsNotificator : ICanNotifyUserOfSuccessfullRegistration { ... }
稍后此实现将通过 DI 容器注入到应用程序中。应用程序不会依赖于基础设施,但仍会使用它,因此依赖倒置。我推荐阅读.NET 中的依赖注入 http://www.manning.com/seemann/,即使您使用 Java 或其他堆栈。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)