【发布时间】:2011-04-12 06:34:55
【问题描述】:
这个网站为我提供了许多有用的答案,但是经过几个小时的搜索,我还没有找到任何专门满足我需求的东西。所以这里...
我工作的公司正在设计一个新的业务对象层和一个数据访问层——它们将驻留在不同的程序集中。
问题是我很难理解这两个层之间的交互 - 具体来说,如果 DAL 知道 BOL,我已经阅读了许多文章说依赖顺序应该类似于这个:
GUI / 演示 --> BOL ---> DAL
但据我所知,DAL 需要对 BOL 的引用才能将对象“返回”到 BOL 层。
我打算在 BOL 和 DAL 之间建立一个中间组件,它基本上是一个填充了接口的薄层,以解耦这两个 DLL,因此如果需要,框架可以使用不同的 DAL。
这让我想到了引入另一个薄层,其中包含 BO 实现的一堆接口,然后当 BOL 调用 DAL 接口时,它会传递一个实现这些 BO 接口之一的对象,然后 DAL 继续执行填充对象。这消除了 BOL 和 DAL 之间的所有依赖关系 - 但是,我发现说实话很难证明它的合理性。
理想情况下,我们希望使用 ORM,因为它只是消除了编写 CRUD 内容的需要,但我们的客户习惯于在他们的数据库中摆弄列长度,这是迄今为止我们使用强类型数据表。我听说 Linq2SQL 还在编译时存储列长度,不确定 NHibernate 是否这样做(但是,我不确定我们的数据库模式是否为 NHibernate 设计得足够干净,处理遗留系统的陷阱)。
所以,是的,任何关于 BOL 和 DAL 之间关系的见解都非常受欢迎 - 如果上面写得不好,我们深表歉意,如果有人需要澄清,我很乐意提供更多细节。
马龙
【问题讨论】:
标签: c# visual-studio-2008 data-access-layer n-tier-architecture