2013-03-13 69 views
1

在.net中的依赖注入(一本伟大的书籍感谢标记)。 在第41个杂项其他问题: 他谈到一个反面模式,引用DAL和BLL UI,DAL定义域对象(实体框架自动生成的对象),他说:DML参考DAL是一个技术问题? (依赖注入.net中的书)

大多数领域模型似乎在数据访问库中实现。 鉴于技术问题,域模型库引用数据 访问库,这是一个概念性问题,即数据访问库将类定义为产品类的这样一个 类。公共产品类属于域模型。

我明白,DAL不能定义域对象,但我不明白为什么DML引用DAL是一个技术问题? 当我们谈论域模型库时,我们是在讨论BLL(业务逻辑层)。

+1

大多数答案在这里:http://stackoverflow.com/a/9503612/126014 – 2013-03-13 17:39:18

+0

感谢马克,所以如果我明白了: +有一个依赖:如果一个对象实例化另一个对象。 +没有依赖关系:如果一个对象需要抽象(构造器注入,方法注入...) + Assembly References(引用dll,webservices ..)独立于依赖关系概念,因为解析抽象并且能够为了编译代码,该层必须引用它。 – 2013-03-14 16:48:24

回答

4

是的,域模型库(DML)是一个业务逻辑层(BLL)。这个库应该包含域模型实体(应该是持久的无知)和域服务。

为什么这是一个技术问题? DAL中的任何更改都需要编译DML。如果你将逆向依赖,那么DAL将充当你的域名插件。您可以自由地更改它(在内存,文件中保留数据或使用其他数据库提供程序),而不会影响BLL。

+0

所以通过引用,他意味着直接引用(紧密耦合)? 因为如果我没有错,在一个n层架构中,每一层都必须引用下面的图层。 – 2013-03-13 14:37:54

+2

@riadh是的,我认为他是指直接引用(如添加程序集引用)。还有一些架构的依赖方向不是从上到下,例如洋葱(或六角形)体系结构 - 它在中心具有域模型,由持久性和表示库引用。 – 2013-03-13 14:44:03

+2

@riadh n * layer *体系结构的正确定义是每个层必须与其下面的层进行通信。该体系结构没有提到组件引用的方向。 – 2013-03-13 17:42:33