【问题标题】:UI layer dependency in DDDDDD 中的 UI 层依赖关系
【发布时间】:2014-09-14 18:36:20
【问题描述】:

我目前的项目是这样组织的:

  • 域层 -> 域对象和存储库接口
  • 基础设施 -> 存储库实现
  • 应用层 -> MVVM 模式中的服务
  • Presentation -> 仅访问服务层并使用 ViewModels

我正在使用 IoC 容器(SimpleInjector)。我的服务在构造函数中接收到一个 IRepository,例如:

public CustomerService : ServiceBase
{
   public CustomerService(ICustomerRepository repository, IUnitOfWork<CustomerContext> uow)
   {
     ...
   }
}

我的问题是:

要在服务中注入存储库,我的表示层应该引用域层。可以添加此参考吗?我的表示层不应该只引用基础设施和应用层吗?

【问题讨论】:

  • 对于 IoC,您必须引用表示层中的所有层(因为它是 IoC 引导程序配置的唯一有效位置),因为引导程序需要知道具体实现(基础设施/数据访问层)和接口(域层)来绑定它。

标签: c# mvvm domain-driven-design inversion-of-control


【解决方案1】:

是的,没关系。

您需要对来自组合根(通常位于表示层)中的所有组件的引用。

我知道一开始感觉有点奇怪,但是你需要区分 DLL 依赖和硬类依赖。如果您的表示层依赖于 DLL 是可以的,当视图依赖于 SQL 存储库时就不行了(例如)。

我已经写了一篇关于此的博客文章,其中包含更多信息:

http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2014-04-07
    • 2017-06-10
    相关资源
    最近更新 更多