最近写了个程序
自己感觉好象是为了三层而三层
dal:实现数据库的操作
bll:实例化dal,然后返回dal的方法。  public PhotoBll
   {
    photodal = new PhotoDAL;
   }
   public List<PhotoInfo> GetPhoto()
   {
return photodal.GetPhoto();
   }UI:调用BLL的方法看了petshop的例子,还有工厂模式,接口,反射,可是看着有点不明白!
自己该怎么提高?
各位前辈指点迷津下!

解决方案 »

  1.   

    加了工厂模式,接口还有反射这些进去
    有什么用呢?
    最近看着petshop,然后在看了一些petshop帮助文档,可是还是不明白!有点纠结!
      

  2.   

    你这个三层就是  DAL  BLL 然后ui  是三层 但是问题很多 
    1  分层的目的有一条必须实现解耦 
    你的 BLL 是直接通过DAL层类的实例访问DAl  没有实现解耦 比如说要 增加一个操作(验证是否存在相同的用户名) 这样你要 从底层一直写到 ui层。2 你应该设想  你的 DAL能更换数据库类型么? 3 其实 BLL 和 DAL 中间是要加入一个适配器层的   这个可以通过 设计 IDAL  IBLL实现
      

  3.   

    三层:基于数据库来持久化数据的应用程序,界面设计、事件处理中不与具体数据库绑定
    有DAL,就把数据处理逻辑写在BLL中来维护Model,实现业务实体。
    IDAL,实现接口。
    DALFactory,返回程序集的指定类的实例。
    http://topic.csdn.net/u/20090525/19/5572dc95-4ad9-48b0-ba91-9bca37ad0ebf.html
      

  4.   

    这个和三层没什么关系,你这是典型的事务脚本模型。
    PetShop的工厂模式、反射和接口,都是为了层之间的松耦合和可替换而准备的,如果你的数据库和持久化框架不会变动,这些东东可以忽略。
      

  5.   

    前段时间我也一直觉得写程序是为了三层而三层,我甚至有段时间只会三层,一层写起来就下不去手,其实三层比较觉得不好理解的可能是BLL层,无非主要就是封装在多个页面里可能被多次调用的方法,化整为零,我觉得不管是否有无目的性的写三层,或者程序多小,三层对于我们来说都是一种好的习惯,哪怕你根本用不着去写,养成这个习惯,便于你去更好的阅读其他的程序,也便于你最自己写的程序将来有一个更好的维护,毕竟我们现在是喷泉式开发,客户的要求是不断增加,不断修改的,有一个三层结构,当你要修改一个计算方式时,在三层结构中找到你要修改的方法即可统一各页面,为自己争取到时间,也不容易使程序混乱。
      

  6.   

    学习了三层感到很方便,久了,你就变成为了三层而三层。其实一些小的项目根本可以不用到三层。我们学习三层就掌握它的思想,了解它的思路,从而更好地去维护网站。
    三层可以大概分为:
    表现层(Web),用途:在ASP.NET中,该层包括aspx页面、用户控制、服务器控制以及某些与安全相关的类和对象。对BLL层的调用
    业务逻辑层(BLL),用途:对DAL层的各种方法的调用
    数据访问层(DAL),用途:数据库的连接,数据的操作(增加、删除、修改、查询)各层间的访问过程
    1、传入值,将值进行类型转换(为整型)。2、创建BLL层的content.cs对象c,通过对象c访问BLL层的方法GetContentInfo(ID)调用BLL层。3、BLL层方法GetContentInfo(ID)中取得数据访问层 SQLServerDAL的实例,实例化IDAL层的接口对象dal,这个对象是由工厂层DALFactory创建的,然后返回IDAL层传入值所查找的内容的方法dal.GetContentInfo(id)。4、数据工厂通过web.config配置文件中给定的webdal字串访问SQLServerDAL层,返回一个完整的调用SQLServerDAL层的路径给 BLL层。5、到此要调用SQLServerDAL层,SQLServerDAL层完成赋值Model层的对象值为空,给定一个参数,调用SQLServerDAL层的SqlHelper的ExecuteReader方法,读出每个字段的数据赋值给以定义为空的Model层的对象。6、SqlHelper执行sql命令,返回一个指定连接的数据库记录集,在这里需要引用参数类型,提供为打开连接命令执行做好准备PrepareCommand。7、返回Model层把查询得到的一行记录值赋值给SQLServerDAL层的引入的Model层的对象ci,然后把这个对象返回给BLL。8、回到Web层的BLL层的方法调用,把得到的对象值赋值给Lable标签,在前台显示给界面
      

  7.   

    先熟悉三层 项目用三层 尽量仿petshop 等技术积累到一定程度 自然就明白了
    不懂的话只能先照抄 自己摸索出错会比较多
      

  8.   

    确实
    现在如果要改动个地方,就要改dal,bll,ui,好麻烦的说!
      

  9.   

    asp.net 技术交流群 71436018
      

  10.   

    下载一个Petshop 4.0看看。看看它的源代码文件
      

  11.   

    我觉得三层首先要分清楚三层的作用 
    ui层 用来和客户交互 调用bll层的业务方法
    bll层 用来处理业务逻辑 什么是业务逻辑 就好比一个登录功能 就属于一个业务 放在bll层中
    dal层 用来处理和数据库之间的操作 例如增加 删除 修改这种单独的功能。楼主现在觉得bll层就是实例化dal层 然后调用方法 我觉得是因为还没有复杂的业务逻辑 就拿一个简单的登录来说 就不是单独的实例化一个对象 调用一个方法就可以解决的了。 最起码需要判断用户名密码是否正确。以及其他的判断,才能完成一个登录功能。像楼主其他的问题,例如工厂模式、接口、反射,我觉得这些首先不是要看是怎么做的,而是要看是用来做什么的,能够解决什么样的问题。到真正遇到问题的时候可以想到用什么来解决。
      

  12.   

    这个三层啊,最好读一读我的云思想:http://topic.csdn.net/u/20100531/09/95f5b40f-55de-42d4-86b8-f3149e2ada97.html 读完之后,也许大家就不再觉得三层是个东西了。
      

  13.   

    写三层,我DAL层从来不动
    自己写的操作数据库的方法放在BLL层里
      

  14.   

    三层架构和设计模式是两码事,可以分开而不要搅在一起说实话,我还没用过设计模式,有几个项目本来已经用了
    但最后觉得有些勉强,还是Pass掉了,这东西不能强求
      

  15.   

    看看这个帖子,不要为了00而00
    http://topic.csdn.net/u/20100514/06/90a58e04-6d59-44bf-92b5-57cdfb7b5b9b.html