学习asp.net也差不多快有一年了吧,但是对三层架构一点也不明白,一直迷迷糊糊,不知如何下手,因为不明白,做东西也从来都不用的,
一直想把三层弄明白了,各位哥哥姐姐,你们当时是怎么学会的啊?能否支两招,(推荐一些比较好的材料,如果有简单适应的小例子就更好了)
让我这个基本什么都不会的能看明白了,将不胜感激!!谢谢了先,分数不多了,有分必加

解决方案 »

  1.   

    多动手做些,比什么都好!
    例子51ASPX有
      

  2.   

    因为你没用它,所以你不会。
    看几眼PETSHOP就会了。
    或者随便找个代码生成器生成一个就明白了。
      

  3.   

    要学习三层,我个人推荐你去下载微软官方的petshop 4.0项目,有源代码,是个不错的学习项目
      

  4.   

    没多大意义,多注意处理逻辑业务...data没必要太多关注了...好的生成工具太多了
      

  5.   

    petshop 或者去http://www.51aspx.com下载一个三层的。研究一下就知道了。
      

  6.   

    我做ASP。NET也一年多了(主要做电子商务网站),跟楼主有一样的困惑,偶然去了解过,没搞明白,不过我不管这些东西,能把项目做出来就OK。
      

  7.   

    petshop 估计你看了就更晕了,可以下些小的看是怎么做的!
    我感觉平时非大的项目或者后期会更新的没有必要使用三层的结构
      

  8.   

    --> 数据层:--> 逻辑层:新建类:Test.cs(放于App_Code文件夹下,新建方法 public DataSet myDS(){ DataSet ds = new DataSet(); return ds;})--> 用户层:Default.aspx.cs : Test myTestCS = new Test();DataSet ds = myTestCS.myDS();就是这么简单。
      

  9.   

    说白了:
    1.(数据访问层)把有关访问数据库的Select,insert,update,delete等放到一个或多个类里,也就是所谓底层!!
    2.(业务逻辑层)把你的相关的编码(有关逻辑)放到另一个或多个类里,也就是所谓中间层!!
    3.(表现层)就是你的页面,这里的工作主要是向中间层传递参数及界面设置!!
      

  10.   

    补充14楼说白了: 
    1.(数据访问层)把有关访问数据库的Select,insert,update,delete等放到一个或多个类里,也就是所谓底层!! 
    2.(业务逻辑层)把你的相关的编码(有关逻辑)放到另一个或多个类里,也就是所谓中间层!! 
    3.(表现层)就是你的页面,这里的工作主要是向中间层传递参数,接受从中间层返回的数据,以及界面设置!!
      

  11.   

    三层架构就是设置模式问题,下载petshop 等开源三层看看,多实践就明白了。
    http://www.cnblogs.com/82767136/articles/1213620.html
      

  12.   

    建议楼主学习software engineering 相关知识
      

  13.   

    学习三层你先得先看看设计模式中工厂模式和.net中的反射机制
    然后去网上找这篇文章<<浅谈三层结构原理与用意>>看看
    把里面的代码敲一遍就知道啥是三层了
      

  14.   

    新手的话.不推荐看petshop,那个难度有点高.如果你就只是要资料,想要得到概念性的东西.随便网上搜一搜会有很多,可以看看http://topic.csdn.net/u/20090106/16/8ee503a4-179c-4f1c-8d39-9dae59cbf5ee.html
    可以看一下这帖子,讨论的很热,不过里边有些误人子弟的方法.重要的还是要自己去理解
      

  15.   

    我也是菜鸟
    不大懂阿
    不过我感觉用了三层后 层次更清晰 也方便 不用每个页面都要Open Close
    呵呵
      

  16.   

    呵呵,,我也搞不懂,,不过我一直都是这样做站的:
    --> 数据层: --> 逻辑层:新建类:Test.cs(放于App_Code文件夹下,新建方法 public DataSet myDS(){ DataSet ds = new DataSet(); return ds;}) --> 用户层:Default.aspx.cs : Test myTestCS = new Test();DataSet ds = myTestCS.myDS(); 
      

  17.   

    个人建议:到http://www.maticsoft.com/把三层例子下载下来,有两种,一个是简单三层;一个是工厂模式。
    自己试着写一次,然后再去看关于三层的理论,这样会更深刻。
      

  18.   

    http://www.cnblogs.com/conquer/archive/2006/11/18/564715.html
    这是以前在做03项目时整理里的,可对你有帮助
      

  19.   

    写一个演变过程给你。得到用户信息表格
    一.一层.conn.cmd (this.label=....),显示.
    二.发现如果要商品表,又要重复 conn,cmd,得到数据。所以
      把重复的集中起来.分二层.
      第一层:class dal
           {
              string conn;
             dateset get()
              {
                cmd.......
              }
       }
      第二层:this.label=get(得到用户);
          this.label=get(得到商品);三,后来方法越来越多 ,得到用户基本信息,得到用户名字,得到用户...get1(),get2,get3,get4().....
        发现方法里面都用了一些基本的数据操作.cmd.ExecuteNonQuery()等。....
       又把他们集合起来.   class dal
           {
              string conn;
             dateset get()
              {
                cmd.......
              }
       }   变成
        class dal
           {
               dateset get1()
              {
                dbhelper.get1();
              }
         }
            class dbhelper
             {
             string conn;
              }
         这里还是二层.只是加了一个数据帮助类 dbhelper.
    四,得到用户信息后 .this.label1=rs["name"].  this.label2=rs["id"].....
        可以很好操作。
       添加信息方法:name=this.lable1.text; 
                     id=this.lable2.text;                   set name=name,id=id.      可是可以.但是我们用集中的思想.如果表的信息都在集中在一起那该多好.
          class user
    {
    string name;
    int id;
    }我们就可以
    user=getone();
    .this.label1=user.name; this.label2=user.id.tosring();......
    到现在我们有了user(model),dbhelper(帮助类) dal(数据访问类)五,程序老变.
      得到用户信息.后来老板说,不是所有人都可以得会员信息.除了我。
       ok .到dal层中加一个修改 get1()只给老板用.     副总又跑过来。老板说我也可以用.又某某某跑过来。...
          刚催 get1();给所有人用.
          再加一个 check()
    check()
    {
    ...
    get1()
    ....
    }
    到这里来判断.   (重载一样)
      要求越来越多.dal.越来越杂.
      但是你又发现。里面还是有写没有变.而且变的部分.都用到了那些没有变化的方法.
      老思想.把不变的集中起来。变的出去。   class bll
    {
         privite static readonly dal=new .....();
         check()
    {
    .....
    dal.get1()
    ....
    }
        
    }
    到现在我们有了user(model),dbhelper(帮助类) dal(数据访问类) bll(逻辑层)
    六,后来又发现getone(),变来变去.今天是sql代码,明天是存储过程. 或者数据库要更换.
      抽象出来.
         interface iget();   sqldal:iget
       prodal:iget  用反射来实现工厂.
      ....不写了。反正就是这个意思了。如果变化不大.就这样分层就可以了。
     工厂层.接口层.就不需要了。
            
      

  20.   

    三层的是 
    数据访问 类dao 方法select insert update delete 
    业务逻辑 类business 处理逻辑,调用dao的方法取数据,然后处理 
    表示层  web画面,调用business类的方法,得到按逻辑处理过的数据,显示在画面上 
    返回的可以是model(数据实体类),也可以是datatble,dataset数据集合等啊 这个根据需要