初识三层

前言

   三层真的没有什么概念,也不知道如何说起,自己学习了半天也没有明白到底什么是三层?为什么要分为三层?三层的优势是什么?所以不管懂不懂就先这样总结一下吧!学习三层看完一个视频,敲完代码,为什么这样分,不知道?

三层是什么?

   三层有两个方面,逻辑上的划分VS物理上的划分。
  本人学习的是软件所以就简单的说下物理上的详细说下逻辑上的(写软件)。
  物理上的三层分为:显示层、业务层、数据层。
  逻辑上的三层分为: UI(表示层)、BLL(业务逻辑层)、DAL(数据访问层)。
  UI(表现层):位于系统的最外层(最上层),离用户最近,主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。
  BLL:(业务逻辑层):UI层和DAL层之间的桥梁。实现业务逻辑(通过获取UI传来的用户指令,执行业务逻辑,在需要访问数据源的时候,直接交个DAL进行处理。处理完成后,返回必要数据给UI。)。业务逻辑具体包含:验证、计算、业务规则等等。
  DAL:(数据访问层):与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。数据访问包括访问数据库系统、二进制文件、文本文档或是XML文档。数据访问层只负责对数据的访问存取工作。
  在我们写软件的时候只有这三层是不够的,还需要有Model层。
  Model层:这里用来封装一些常用的功能性代码,主要用来为其它层服务的。还有存放一些自定义实体类型和自定义实体类型集合。用于各层次之间数据交互的载体,例如User,UserCollection。
调用关系:
这里写图片描述

三层架构各层的职责分配

   表示层(UI):只接收用户输入的数据,并将业务逻辑层处理数据的结果显示给用户。
  业务逻辑层(BLL):只负责对数据的业务处理,开发人员不要在业务逻辑层里写访问数据库的SQL语句。业务逻辑层可以验证用户输入的数据、缓存从数据库中读取的数据等等。
  数据访问层(DAL):最好不要出现任何与业务逻辑和界面设计相关的代码。也就是说,要保证数据访问层中方法的功能仅负责存储或读取数据就可以了。
  Model的存在是很有必要,但是不属于三层中的任何一层。
  Model层(实体类):这里用来封装一些常用的功能性代码,主要用来为其它层服务的。还有存放一些自定义实体类型和自定义实体类型集合。用于各层次之间数据交互的载体,例如User。

三层的优点是什么?

   UI层和BLL打交道,不用处理SQL语句;开发更方便,更不容易出错。一般,UI层中没有复杂的代码,解耦合,容易改变UI层技术。如果由 Winform改成asp.net只要修改UI即可。如果由Sql Server改成Oracle,只需修改DAL即可。
  这里还要提醒大家一点:Model是在三层之间传递数据的。而且Model不属于三层中任意一层。
  那么各层之间使用Model(实体类的作用是什么呢???)
  表示层中使用实体类:
    1.将解析实体对象中封装的数据展示给用户
    2.将用户请求的数据封装到实体对象中
  业务逻辑层中使用实体类:
    1.将接收到的实体对象传递到下一层
    2.根据用户请求对实体对象中的数据进行处理。
  在数据访问层中使用实体类:
    1.将数据库中的数据封装到实体对象中或将多个实体对象封装成集合。
    2.将实体对象中的数据保存到数据库中。
这里写图片描述

三层的效率

   三层一般会比不分层满,但是为了分工明确,这样的少量的性能下降是可以的,很多时候效率不是唯一追求的因素。

猜你喜欢

转载自blog.csdn.net/m18330808841/article/details/79563302