从网上下了几个三层的源码看了看,这哪是三层,一个解决最多方案里有做多7个项目,难道有7层?
后来仔细看了一下,原来用到了反射和抽象工厂所以多了一层(DALFactory),还有一些类和接口(model,IDAL)是多于两层都用到的,所以把它们写到了单独的项目里。这样感觉六个项目就够了(UI,BLL,DALFactory,DAL,Model,IDAL)。疑惑1、为什么BLL里都没有什么东西,基本上都是几行代码,什么东西应该放在BLL里,BLL的意义何在?疑惑2、DAL里也有一些带有“user""login"等字眼的类,这些类基本都是一些对跟类同名表的增删查改的操作,这是不是业务逻?。如果把这些写在了DAL里是不是会不太方便呢?例如:如果又要做另一个项目(做另一个应用程序),把上一个项目的DAL拿过来用,却发现这个项目和原来的项目数据库里的表是不一样的,所以DAL还要做较大改动才能用。望高手解惑!
后来仔细看了一下,原来用到了反射和抽象工厂所以多了一层(DALFactory),还有一些类和接口(model,IDAL)是多于两层都用到的,所以把它们写到了单独的项目里。这样感觉六个项目就够了(UI,BLL,DALFactory,DAL,Model,IDAL)。疑惑1、为什么BLL里都没有什么东西,基本上都是几行代码,什么东西应该放在BLL里,BLL的意义何在?疑惑2、DAL里也有一些带有“user""login"等字眼的类,这些类基本都是一些对跟类同名表的增删查改的操作,这是不是业务逻?。如果把这些写在了DAL里是不是会不太方便呢?例如:如果又要做另一个项目(做另一个应用程序),把上一个项目的DAL拿过来用,却发现这个项目和原来的项目数据库里的表是不一样的,所以DAL还要做较大改动才能用。望高手解惑!
需要深入理解
DAL:数据访问层 数据表名+DAL,是对此表增删改查的封装
BLL:业务逻辑层 数据表名+BLL,是对业务逻辑的封装,比如登陆,UserDAL里面应该有个getUserByName(string name)获取一个对象,在UserBLL里面通过User u = UserDAL.getUserByName(前台的登录名);
if(u.PassWrod==前台的密码)判断是否登陆成功,
个人理解,仅供参考,高手莫拍,
BLL ,业务逻辑层 ,不只业务逻辑的封装,还有验证啊,等等
前台需要添加 BLL 和 Models 项目的引用Models这个项目几乎每层都会用到
DAL数据访问层 是要根据不同的表来定义处理
DALFactory 这个是数据工厂,使用反射来创建DAL层对象的。
IDAL 声明DAL层向外部暴露的接口,它也是反射机制的重要组成。Model 只是声明数据结构
而DAL层是数据连接层,包括调用数据库中的存储过程,传参,以及函数的编写.
这个帖子过几天再结,互相学习啊!
那要看你的业务复不复杂了,如果你添加用户,不光是往用户表插入数据,还要往日志表插入操作,还要往权限表插入数据,那你的BLL里面就不简单疑惑2、DAL里也有一些带有“user""login"等字眼的类,这些类基本都是一些对跟类同名表的增删查改的操作,这是不是业务逻?。DAL里面都是数据库操作如果把这些写在了DAL里是不是会不太方便呢?例如:如果又要做另一个项目(做另一个应用程序),把上一个项目的DAL拿过来用,却发现这个项目和原来的项目数据库里的表是不一样的,所以DAL还要做较大改动才能用。这是肯定的,就像网上没有稳定的DAL提供下载一样,都是根据数据库的表字段来的
view
control
2. 如果把UILayer拿掉, 你的项目还能在Interface/API的层次上提供所有功能吗?
3. 你的DAL可以移植到其他类似环境的项目吗?
4. 三个模块, 可以分别运行于不同的服务器吗?
如果不是所有答案都为YES, 那么你的项目还不能算是严格意义上的三层程序
2.BLL业务逻辑层,主要是处理逻辑判断方面的,楼主看到的那个项目都是操作数据库的添删改查,所以基本上没有什么逻辑,这一层只是为了以后方便扩展,如果楼主去研究socket时,你就会知道那个逻辑不是一般的多...
3.DAL数据访问层,所谓的数据访问层就是对数据库语句的操作,所以楼主看到的都是一些表名之类的字段.其中DAL层中有个通用类DBHelper,即数据访问类,这个类主要负责接收每个表对应的DAL类传过来的SQL语句,然后利用ADO.Net的几个对象对数据库进行添删改查.
4.至于楼主的这句话:(例如:如果又要做另一个项目(做另一个应用程序),把上一个项目的DAL拿过来用,却发现这个项目和原来的项目数据库里的表是不一样的,所以DAL还要做较大改动才能用).这个完全不用担心,应为上面我提到过一个DBHelper通用类,只要你的数据库不更换(如MySql换SQLServer或者Oracle)拿到哪里都可以使用,我们只要把每个更换的表对应的DAL类表名和字段名修改一下就可以了.
http://blog.csdn.net/kmy001/archive/2010/10/14/5940480.aspx