似乎每个人都知道你应该明确区分GUI,业务逻辑和数据访问.我最近和一位吹嘘自己总是拥有干净数据访问层的程序员交谈过.我查看了这段代码,结果发现他的数据访问层只是一个包含一些SQL方法的小类(比如ExecuteNonQuery和ExecuteReader).事实证明,在他的ASP.NET代码页面后面,他有大量的SQL硬编码到page_load和其他事件中.但他发誓他正在使用数据访问层.
所以,我把问题抛出去了.您将如何定义数据访问层?
你的同事所说的并不是大多数人所认为的DAL.DAL应该封装对数据库的任何调用,无论是由动态SQL,存储过程还是与IRepository之类的东西完成.您的网页永远不应该包含SQL或业务逻辑,否则它将成为维护的噩梦.
.NET的一个非常简单的例子如下.
如果有两个类:SomePage(这是一个ASP.NET页面)和DataService(这是一个普通的旧C#类)
如果SomePage始终调用DataService来读/写数据,那么您就拥有了一个数据访问层.SomePage将不包含SQL或对System.Data.SqlClient类的引用.
但SomePage可以使用从DataService类传递到DataService类的DataSet或业务对象.