将DAL连接到UI层的最佳实践

时间:2013-06-16 09:31:37

标签: c# nhibernate devexpress iqueryable 3-tier

我一直被告知,使用3层模型设计应用程序是将数据层和业务逻辑层与表示分离的最佳实践。

但是当我使用现代用户界面组件(如DevExpress)时,我将失去很多很棒的功能,例如动态过滤,分页,动态加载......等等。

并且您应该实现自己的方法,允许用户控件保留这些功能。

我读过Nhibernate家伙Ayende的那些文章:

http://ayende.com/blog/3958/the-dal-should-go-all-the-way-to-ui
http://ayende.com/blog/3955/repository-is-the-new-singleton
http://ayende.com/blog/4567/the-false-myth-of-encapsulating-data-access-in-the-dal

现在我感到困惑!这是否意味着我可以在我的UI中引用Nhibernate?例如,我可以使用以下代码:

GridView.DataSource = session.Query<Order>();

1 个答案:

答案 0 :(得分:1)

从过滤,分页,动态加载等方法和方法的角度来看问题并不是解决问题的完整方法,至少有两个原因,第一个是因为你的DAL和DAL接口必须提供适用于这些机制的API,否则你的DAL将被视为一个不完整的DAL,第二个更重要的是你的应用程序/系统的环境,这里我们有很多问题需要我们自己,或者我们可以将其命名为战略决策 1-我们是否需要随着时间的推移改变数据库引擎? 2-我们的应用程序/系统的复杂程度是什么?我的意思是BLL复杂性如果我们的大多数应用程序/系统只是CRUD方法,我们必须问自己我们真的需要创建BLL

实际上这里有很多问题,对这些问题的回答可能会驱使我们进入简单的面向对象的体系结构,它将我们引导到一个对象,该对象包含用于对对象数据进行建模的属性,以及(创建,更新,和删除)操作对象的实例方法,以及(ReadByID,ReadAll,ReadPage ets)静态方法从数据库中检索持久化数据