APL*_*APL 9 domain-driven-design ddd-repositories
我有一个关于DDD分层架构的依赖关系的问题.如果Repository实现位于基础结构层中,则意味着基础结构层依赖于域层,因为实体将在Repository实现中引用.
另一方面,如果在域中使用基础结构服务,则Domain层可以引用基础结构层.
这不会创建循环引用吗?
Gra*_*ler 13
看看洋葱架构, 它显示了DDD解决方案的良好设置.
基本上,域服务的所有域模型和接口都被视为核心.图层仅依赖于靠近核心的图层.它们的实际实施由基础设施处理.
域项目不应该引用基础设施项目.如果域需要使用某些东西,则应将其定义为域内的接口并在基础结构项目中实现.
最终,您的界面定义了您的应用程序.实现方式的逻辑是外化的.所以我希望你有组件与域模型和域服务,前端(例如MVC等),然后是基础设施组件,实现NHibernate等提供数据等.
您可以在链接文章的各个部分中看到实现该体系结构的各种示例.最简单的就是这里
您可以在此处查看与其相关的问题
主要的好处是,主要是基础设施问题最常发生变化.新的数据层技术,新的文件存储等.此外,您的核心域应该相当稳定,因为它没有实现任何仅通过合同(接口)定义它所需要的东西.通过将实现问题放在一个位置,可以最大程度地减少程序集中所需的更改量.