热门标签 | 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只需要呼叫业务访问层就可以实现跟用户的交互。


      五、现实生活中的三层


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

                                   


      结语


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




推荐阅读
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了2019年上半年内蒙古计算机软考考试的报名通知和考试时间。考试报名时间为3月1日至3月23日,考试时间为2019年5月25日。考试分为高级、中级和初级三个级别,涵盖了多个专业资格。报名采取网上报名和网上缴费的方式进行,报考人员可登录内蒙古人事考试信息网进行报名。详细内容请点击查看。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
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社区 版权所有