任何机构都可以解释如何使用DI IOC在基于层的体系结构中设置层之间的依赖关系,还请解释当我们在UI层创建Composition根时,我们需要在UI层中引用所有dll这留下UI的范围开发人员直接访问DAL图层对象。这将违反UI层不能直接访问DAL对象的规则。
任何架构师SME都能解释使用下面提到的技术堆栈实现基于分层的架构的正确方法。
这里的技术偏好是 ASP.NET MVC 4,REST API服务,企业库(存储库模式)
答案 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
由于