设置层之间的依赖性倒置

时间:2016-02-28 12:15:13

标签: architecture

任何机构都可以解释如何使用DI IOC在基于层的体系结构中设置层之间的依赖关系,还请解释当我们在UI层创建Composition根时,我们需要在UI层中引用所有dll这留下UI的范围开发人员直接访问DAL图层对象。这将违反UI层不能直接访问DAL对象的规则。

任何架构师SME都能解释使用下面提到的技术堆栈实现基于分层的架构的正确方法。

这里的技术偏好是 ASP.NET MVC 4,REST API服务,企业库(存储库模式)

3 个答案:

答案 0 :(得分:1)

我认为这是UI Layer&#34之间的区别;不应该"访问DAL层,"不能"。实施分层确实很复杂,使得DAL实际上是UI层无法访问的。关键是,应该不能从UI访问DAL。

就像你不应该从UI层访问数据库本身一样,但没有什么能阻止流氓开发者这样做。

顺便问一下,您是否手动创建了合成根?您应该看一下DI框架。它会隔离很多这些依赖项,是的,它需要知道所有层,但它将这些东西保存在一个相当不错和干净的地方。这个人有一些不错的概述:https://rules.ssw.com.au/do-you-know-the-best-dependency-injection-container-(aka-do-not-waste-days-evaluating-ioc-containers)

答案 1 :(得分:1)

您正在将N-Tier与DI混合。两者都是无关紧要的概念,不依赖于彼此。为了获得最佳输出,您需要对这两个概念进行深入研究,做几个原型并选择最适合您的设计。

那只是因为没有"正确"或"不正确"使用那些技术堆栈实现这两个概念的方法。实现这一目标的方法太多了。

例如:简单的3层。由DAL(带数据模型),BLL引用DAL和Presentation

组成

4层。数据模型层,DAL引用数据模型,BLL引用数据模型,使用依赖注入的表示

DDD(域驱动开发),具有域模型,数据库域模型和表示层(附加CQRS)

做你最熟悉的事。稍后重构/重写。

答案 2 :(得分:0)

在SO中对这个问题的回答给了我们正在寻找的答案或解释 Dependency Injection vs Layered Architecture

由于