热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

初览三层(理论篇)

闻听三层,在学习之前我对它听说,具体是什么东西还不知道,脑海里无数次想象着三层的模样,带着它是什么、它能做什么、它的作用是什么这三个问题我开始进入三层的世界

      

       闻听三层,在学习之前我对它听说,具体是什么东西还不知道,脑海里无数次想象着三层的模样,带着它是什么、它能做什么、它的作用是什么这三个问题我开始进入三层的世界。


     一、 概述


      这里所说的三层指的是逻辑上的三层结构。

      这三层都包括:UI(显示层)、BLL(业务逻辑层)、DAL(数据访问层),这三层的主要分工如图:

                                   

      1. UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理;

      2. BLL负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI;

      3. DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理。


      二、各个层之间的引用关系


      UI -> BLL -> DAL,这三层分别在不同的程序集中。

    解析:1.DAL所在程序集不引用BLL和UI

                 2.BLL需要引用DAL

                 3.UI直接引用BLL,可能会间接引用DAL

      三层结构很清晰,有很明确的分工,而且相对独立,但在实现关于三层的登录小例子的时候,又多了一个实体层,即Model层,我觉得它只是数据库中的表变相为实体,相当于一个临时容器,为了存取数据方便而已,它与每个层都有关系。怪不得王继斌老师将它形容为“上蹿下蹦”,上蹿蹿到UI层,下蹦蹦到DAL,专门用来放数据模型的。是为了封装数据,然后在三层之间能够传输数据,是独立于其他三个层次,它不会引用任何一个程序集的。


     三、 优缺点


      (1)优

      1.可降低层与层之间的依赖

      2.有利各层逻辑的复用

      3.有利于标准化

      4.安全性高,用户端只能通过业务逻辑层来访问数据库,减少入口点

      5.项目结构清楚,分工更加明确,有利后期的维护和升级

      正因为这些优点,使三层达到了解耦的目的。

      (2)缺

      1.降低了系统的性能

      2.增加了代码量和工作量


      四、什么时候使用


      当业务和数据复杂时,即既有数据访问层,又可以抽象出业务逻辑层,这时使用可以发挥出三层的优点。可以把数据访问脱离开业务单独存在,把业务脱离开UI单独存在,UI只需要呼叫业务访问层就可以实现跟用户的交互。


      五、现实生活中的三层


      三层、实体层之间的关系就像我们去食堂吃饭一样,厨师在厨房里做饭,然后服务员负责将饭菜放到我们碗中,最后学生就可以吃饭啦。其中,厨师怎么做饭的学生不知道,服务员也不知道,学生也不知道饭菜从厨师到服务员那儿需要做什么,但不管是厨师、服务员还是学生都接触到的就是饭菜。总之,厨师、服务员、学生这三者之间是没有关系的,但因学生有需要饭菜这一需求,所以饭菜让这三者之间有了联系,如下图:

                                   


      结语


      当然,三层并不是严格意义上的三层,并不是定死的三层,在进行开发的时候,可根据实际情况来使用三层,发挥三层的优点就是最好的开发。




推荐阅读
author-avatar
Sure张硕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有