三层架构中DAL层有什么用,不是多此一举吗
三层架构中DAL层有什么用,不是画蛇添足吗?
初学不久,看了好多三层的文章,基本上讲的都是DAL里放SQL语句,然后针对SQL语句一个一个写方法调用DbHelper,给BLL调用。这种做法是为什么呢?BLL传一个SQL语句当参数就能解决的事,还要单独写成方法来调用,结果每个DAL都一大堆方法,BLL又只是做个判断然后return dal而已。
DbHelper不就是一个DAL层吗,我怎么觉得MVC那种把BLL和DAL耦合在一起的才比较科学呢,代码量也少很多,三层架构中BLL,DAL分开到底有什么好处呢?有没有好例子可以说明下,越看越迷惑了。
------解决方案--------------------
GetInforBYID(int id){
string cond=" WHere id=@id"
....
paran.id=id
return dal.select(cond,paran);
}
GetInforBYName(string name){
string cond=" WHere name=@name"
....
paran.name=name
return dal.select(cond,paran);
}
------解决方案--------------------
如果你需要研究DAL,你会发现不同的数据库系统有不同的API协议。传统的关系数据库好一些,往往通用地支持最基本的sql(sql92?)标准。而nosql各有各的原生查询方法。
研究并封装应用程序调用数据库的API,这就是DAL。因此SQLHelper是一个初步的、准确的DAL。
DAL作为一种常用的服务工具框架平台,它当然应该脱离开业务逻辑,在你了解了业务逻辑之前就完善它。
而至于说那种“一个类对应一个表的处理方法”的DAL,除了越俎代庖地去做一点BLL的事情,混淆了DAL真正应该负责的职责,反过来我们也可以看出这种所谓的DAL的技术含量和灵活性等于零。
初学不久,看了好多三层的文章,基本上讲的都是DAL里放SQL语句,然后针对SQL语句一个一个写方法调用DbHelper,给BLL调用。这种做法是为什么呢?BLL传一个SQL语句当参数就能解决的事,还要单独写成方法来调用,结果每个DAL都一大堆方法,BLL又只是做个判断然后return dal而已。
DbHelper不就是一个DAL层吗,我怎么觉得MVC那种把BLL和DAL耦合在一起的才比较科学呢,代码量也少很多,三层架构中BLL,DAL分开到底有什么好处呢?有没有好例子可以说明下,越看越迷惑了。
------解决方案--------------------
GetInforBYID(int id){
string cond=" WHere id=@id"
....
paran.id=id
return dal.select(cond,paran);
}
GetInforBYName(string name){
string cond=" WHere name=@name"
....
paran.name=name
return dal.select(cond,paran);
}
------解决方案--------------------
如果你需要研究DAL,你会发现不同的数据库系统有不同的API协议。传统的关系数据库好一些,往往通用地支持最基本的sql(sql92?)标准。而nosql各有各的原生查询方法。
研究并封装应用程序调用数据库的API,这就是DAL。因此SQLHelper是一个初步的、准确的DAL。
DAL作为一种常用的服务工具框架平台,它当然应该脱离开业务逻辑,在你了解了业务逻辑之前就完善它。
而至于说那种“一个类对应一个表的处理方法”的DAL,除了越俎代庖地去做一点BLL的事情,混淆了DAL真正应该负责的职责,反过来我们也可以看出这种所谓的DAL的技术含量和灵活性等于零。