什么是三层架构?做网站是不是一定要用三层架构来做?

解决方案 »

  1.   

    我之前的一个帖子,如下:我个人认为三层是一般WEB项目最合适 分多了也是扯淡 如果非要分那可以分N层 
    我也很想请教怎么分层才是最合理最方便的 分多了层在开发的时候也是很麻烦的··· DAL 
    实际的实现层 也就是和数据库最近的一层 用来操作数据库 IDAL 接口层 用来定义一些方法 这些方法就是在DAL层中实现的 比如我在这写一个接口 接口中有个 int deluser(MUser m_MUser); 
    然后在DAL层中去实现这个方法,首先去继承这个接口 然后去实现接口里的DelUser方法! MODEL 
    因为我们经常的去数据库读取数据并保存 如果处在以前 可以用全局变量把取出的数据保存 但这个办法不合理,在JAVA和.NET种不用全局变量 而是用一个类比如我给用户定义一个叫MUser的类 然后给这个类定义一些属性 比如 u_id这样我可以通过 MUser的实体.u_id 访问它 简单点说就是把一些数据存到里面 用到的时候可以这样取出来! 这个办法的确很形象··· DALFactory 其实就是用来创建类的实例 因为通过类工厂可以方便的创建不同类的实例比如我想实现让项目既可以用SQL又可以ACCESS数据库 
    我就写两个DAL层分别实现读取两种数据库 然后在DALFactory中稍作修改就可以读取不同DAL 实现简单修改就可以在两种数据库之间切换 BLL 此层就是用来通过接口层调用DAL层 WEB层就是调用这个层实现呈现的!也就是他把各个层联系在一起 在WEB层开发的时候 我们只需要关心BLL层中什么方法实现了什么功能需要什么参数 而不必去关心其他的乱七八糟层! 
    web 
    就是网页所在的层也就是呈现给用户看的那一层 
    这样说是很难明白的 你应该对着源码看  希望对你有帮助 
      

  2.   

    每个星期都有人在这里问三层架构
    ...周经帖
    想学三层架构自己用三层架构写一个小miss,比人家说一千一万遍都管用
      

  3.   

    看你是用“三层”练手呢,还是超越它。能超越么?当然可以,练手者在白纸上写上一万遍“三层”这两个字,但是未必过脑子。如果你把机械地动作变为借助一种自动化工具来实现,你可以吸收它的好处,但是没有它的缺点,你写代码时直接写BLL层就行了,DAL几乎不用写但是就能自动完成BLL底层支撑的功能,这就是超越书生的那种三层。对于使用SQL Server的人来说,Linq to SQL就是一种比较简单的工具(虽然不是最好的BLL支撑工具)。
      

  4.   

    我所看到的聪明的开发者,用数据库中间件来实现BLL层代码,而不是去对业务逻辑逐一手写一大堆所谓的DAL层代码。你学开汽车的知识,未必要亲自发明新的汽车,只要会开就可以了。同样,学习所谓的“三层”知识,只要知道设计的时候选择好的可以代替大量DAL垃圾代码的自动化工具(直接支撑BLL层开发)就可以了,无需自己去创造垃圾代码。
      

  5.   

    实际上,“三层”概念的优点是让你知道抓住BLL层来设计,而把DAL放到次要的地位。如果你只是把原来的代码分隔道不同的代码文件中,只能是一种形式上的三层,比不分层其实还麻烦。当你确定了哪些是次要的东西,其实就应该尽量使用最好的自动化工具来代替它(DAL的大部分)(此时不用过分纠缠于“性能”争论),把精力放到重要的东西(BLL逻辑)的快速设计和即时变化的技术上。
      

  6.   

    sp1234说得很正确,三层的意思就是尽量简化数据库访问层,用最简单的SQL语句获得最简单的最原始的数据库内数据,然后把重点放在业务逻辑层上,用C#强大的数据处理能力去处理这些数据,而不用写一条条每条都能堆成一大堆,用上什么内联外联,里面还有好几个select子循环嵌套,再加上一大堆数据库支持的嬴弱的数据比较和处理的SQL语句
    数据库访问层建议用TableAdapter,初学者用起来很方便,返回的DataTable处理起来也很容易,并且可以直接和数据感知控件绑定
      

  7.   

    DAL DataBase Access Level 数据访问层
    BLL Business Logic Level  业务逻辑层