【发布时间】:2011-02-28 00:03:47
【问题描述】:
在领域驱动设计中,是否有任何硬性规定 UI 层不应调用数据访问/存储库层?如果不是,那么它应该如何以正确的方式工作?
谢谢
【问题讨论】:
在领域驱动设计中,是否有任何硬性规定 UI 层不应调用数据访问/存储库层?如果不是,那么它应该如何以正确的方式工作?
谢谢
【问题讨论】:
通常,您将通过调用基础设施层中的数据访问的应用层(控制器)处理对数据访问层/存储库的调用。
但是,Ayende(以 NHibernate 闻名)对这个“规则”有一些有趣的观点。
http://ayende.com/Blog/archive/2009/04/23/night-of-the-living-repositories.aspx
【讨论】:
有些人喜欢通过应用程序服务路由一切。我个人不喜欢that approach。
我认为“一切都通过服务”方法对我来说听起来合理的唯一原因是,如果您明确希望它如此,以便在客户端和域模型之间划出大胆而有力的界限。
这与使用/避免存储库模式非常相似。引用 Ayende:
如果您不想要 LAYER/TIER 边界,则直接使用 nhibernate 即可
正是 seam 的必要性推动了您直接使用 DA 的需求。
如果你不需要那个,你最终会增加沉重的噪音。
【讨论】:
不,没有“硬性规定”。
如果您正在构建一个简单的应用程序,只需注入一个 ISession(如果您不使用 NHibernate,则注入一个类似的东西)。
当事情变得更复杂时,我建议您查看聚合根、存储库和 UI 模式,例如 MVVM、被动视图和 MVC。
“正确的方法”取决于您的上下文以及您计划如何测试。
【讨论】: