zoukankan      html  css  js  c++  java
  • 三层结构的认识

    三层结构的认识

    这几天我在看三层的有关资料,对其有了一点的初步认识,现在对这一点点的认识做一下总结。

    一、三层的划分方式:物理上和逻辑上

    所谓的两层或是三层结构,它又分为物理上的划分和逻辑上的划分。

            ◆ 物理上的三层:显示层/业务层/数据层

           物理上的划分,可以理解为硬件上的划分,因为我们设计的程序架构都是跑在计算机上的,无论是跑在客户机上、服务器上或者是终端机上的,终究它是跑在硬件上的。

            在三层之前就有两层结构或者是单层结构。

            1)下面的图1 是一张典型的CS“客户机”端和“服务器”端的两层物理结构图。

            “客户机”端有用户界面和应用逻辑,“服务器”端就是数据库服务器。

            客户机是PC机或是智能机,

            2)下面我们再看一下三层的物理结构图

     物理上的三层:显示层/业务层/数据层

     显示层,是PC机

     业务层,是应用服务器。

     数据层,数据库服务器。

    ◆ 逻辑上的三层:UI/BLL+DAL/DB

            注意:三层结构的物理划分和逻辑上的划分,可以区分出:BLL和DAL都有可能跑在应用服务器上的,而不是数据库服务器上。

            在这里我们主要讨论的三层是指逻辑的三层,是在数据库之上讨论的三层:UI、BLL、DAL。

    二、三层的应用场景

            我们为什么要使用三层架构?  什么情况下不使用三层架构?

            首先要清楚一点,并不是所有的系统都需要使用三层架构的。

            第一,业务逻辑简单;第二,没有真正的数据存储层,所以也就不需要数据访问层,这是就不需要使用三层架构。

            只有业务逻辑复杂,既有数据访问层,又有业务逻辑层(BLL层),才需要使用三层架构的。

    三、三层的结构

    (1)数据访问层(DAL)

    ◆  DAL的作用

         从数据源加载数据(Select)

         向数据源写入数据(Insert/Update)

         从数据源删除数据(Delete)

    ◆ DAL中常用的技术

         ADO.NET+SQL语句

         O/R Mapping框架     NHiberate(关系模型转换为对象模型)

         访问SQL Sever数据库时Linq to SQL(它是单表映射)

         所以说,DAL的职责:是与数据源打交道,读数据、写数据、删数据.

    (2)显示层(UI层)

             ◆ UI的作用

                  向用户展现特定业务数据

                  采集用户的输入信息和操作

             ◆ UI设计的原则

                  用户至上,兼顾简洁

             ◆中的常用技术

                 WindowsForm:Form 、Control

                 ASP.NET:aspx 、ascx 、master 、html

    (3)业务逻辑层(BLL)

              ◆ BLL的作用

                 从DAL中获取数据,以供UI层显示用

                 从UI中获取用户指令和数据,执行业务逻辑

                 从UI中获取用户指令和数据,通过DAL写入数据源。

            ◆ BLL的职责机制

                 UI→BLL→UI

         UI→BLL→DAL→BLL→UI

    总结:三层的关系

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

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

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

    DAL/BLL/UI分别在不同的程序集中

    各个层之间的引用关系

    UI→BLL→DAL

    DAL所在程序集不引用BLL和UI

    BLL需要引用DAL

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

  • 相关阅读:
    Python 接口测试之处理转义字符的参数和编码问题
    使用Postman工具做接口测试(三)——断言与参数提取
    Django 单元测试笔记
    django 发布会签到系统web开发
    Django自动化测试平台项目案例
    Cypress学习笔记6——Debugging调试代码
    Cypress学习笔记5——官方示例
    Cypress学习笔记4——编写第二个测试脚本(登录案例)
    Cypress学习笔记3——编写第一个测试脚本
    Cypress学习笔记2——Windows环境下安装Cypress
  • 原文地址:https://www.cnblogs.com/fire-dragon/p/6141695.html
Copyright © 2011-2022 走看看