本网站向我提供了许多有用的答案,但经过一个小时的搜索,我还没有找到任何具体回答我的需求的东西。所以这里...业务对象和数据层
我正在工作的公司正在设计一个新的业务对象层和数据访问层 - 这些将驻留在单独的程序集中。
问题是我很难让我的头绕着这两层之间的交互 - 具体来说,如果DAL知道BOL,我已经阅读了许多文章,说过依赖性顺序应该是某种东西像这样:
GUI /演示 - > BOL ---> DAL
但据我所看到的,DAL需求,以便于BOL一个参考,以便能够“回归”对象BOL层。
我打算在BOL和DAL之间建立一个中间程序集,这个程序集基本上是一个填充了接口的薄层,用于分离这两个DLL,因此如果需要的话,框架可以使用不同的DAL。
这使我想到引入另一个带有一组BO接口的薄层,然后当BOL调用DAL接口时,它会传递一个实现这些BO接口之一的对象,然后将DAL继续填充对象。这消除了BOL和DAL之间的所有依赖关系 - 但是,我发现很难证明它是诚实的。
理想情况下,我们希望使用ORM,因为它只是删除了编写CRUD内容的需求,但我们的客户有一个摆弄数据库列长度的习惯,这是我们大多数错误使用的原因强类型的DataTables。我听说Linq2SQL在编译时也存储列长度,不确定NHibernate是否存在(但是,我不确定我们的数据库模式是否为NHibernate设计的干净,处理遗留系统的缺陷)。
所以,任何关于BOL和DAL之间关系的见解都会非常受欢迎 - 如果上述内容写得不好,道歉,如果有人需要澄清,我会很乐意提供更多的细节。
马龙