【问题标题】:Domain Driven Design- UI make direct call to Repository领域驱动设计 - UI 直接调用存储库
【发布时间】:2011-02-28 00:03:47
【问题描述】:

在领域驱动设计中,是否有任何硬性规定 UI 层不应调用数据访问/存储库层?如果不是,那么它应该如何以正确的方式工作?

谢谢

【问题讨论】:

    标签: domain-driven-design dns


    【解决方案1】:

    通常,您将通过调用基础设施层中的数据访问的应用层(控制器)处理对数据访问层/存储库的调用。

    但是,Ayende(以 NHibernate 闻名)对这个“规则”有一些有趣的观点。

    http://ayende.com/Blog/archive/2009/04/23/night-of-the-living-repositories.aspx

    【讨论】:

      【解决方案2】:

      有些人喜欢通过应用程序服务路由一切。我个人不喜欢that approach

      我认为“一切都通过服务”方法对我来说听起来合理的唯一原因是,如果您明确希望它如此,以便在客户端和域模型之间划出大胆而有力的界限。

      这与使用/避免存储库模式非常相似。引用 Ayende:

      如果您不想要 LAYER/TIER 边界,则直接使用 nhibernate 即可

      正是 seam 的必要性推动了您直接使用 DA 的需求。
      如果你不需要那个,你最终会增加沉重的噪音

      【讨论】:

        【解决方案3】:

        不,没有“硬性规定”。

        如果您正在构建一个简单的应用程序,只需注入一个 ISession(如果您不使用 NHibernate,则注入一个类似的东西)。

        当事情变得更复杂时,我建议您查看聚合根、存储库和 UI 模式,例如 MVVM、被动视图和 MVC。

        “正确的方法”取决于您的上下文以及您计划如何测试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-07
          相关资源
          最近更新 更多