zoukankan      html  css  js  c++  java
  • 15三层架构

    为什么要有三层架构???

     
    b8378ef8-a2cc-4f9a-b3b6-b1f8b629f72b.jpg
     
    1. 服务员只需要负责接待客人
    2. 厨师只需要负责烹饪食物
    3. 采购员只需要负责采购食材
     

     

    图片1.png

    发生在哪一层的变化,只需要更改该层,不需要更改整个系统。

    层次清晰分工明确,每层之间耦合度低——提高了效率,适应需求变化,可维护性高,可扩展性高。

     

     

    三层架构(3-tier architecture)

    通常意义上的三层架构就是将整个业务应用划分为:

    表示层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。

    区分层次的目的即为了  “高内聚低耦合”  的思想

    在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。

     

    搭建三层架构

    UI(表示层):

    主要是指用户交互的界面。用于接收用户输入的数据和显示处理用户需要的数据。

     

    BLL(业务逻辑层):

    UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等

     

    DAL(数据访问层):

    与数据库打交道。主要实现对数据库的增、删、改、查。将存储在数据库中的数据提交给业务层。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到用户所需数据反馈给用户)

     

    Model类

    • Model不是一个层,是各层之间数据传输的对象。
    • 实现面向对象思想中的  “封装”
    • 贯穿于三层,在三层之间传递数据;确切的说实体层贯穿于三层之间,来连接三层
    • 每一层(UI—>BLL—>DAL)之间的数据传递(单向)是靠变量或者实体作为参数来传递的,这样就构造了三层之间的联系,完成了功能的实现
    • 对于初学者来说,可以这样理解:每张数据表对应一个实体,即每个数据表中的字段对应实体中的属性。

     

     

     

    三层及实体层之间的依赖关系:

    思想来源于生活:

     

     

     

    MD5

    MD5(Message-Digest Algorithm 5)消息摘要算法

    MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错)。任何长度的任意内容都可以用MD5计算出散列值。

    MD5  长度一般是 32 位的  16  进制数字符串(比如71f396e4134a1160d90bb1439876df31),MD5的个数是有限的,但是数据源是无限的,因此存在着不同的内容产生相同MD5值的概率。因此MD5算法不可逆,也就是只能得到内容对应的MD5值,无法由MD5值反推内容。但是对不同内容产生的相同MD5值得概率非常非常低。

     

     

     

     

     

     

    三层架构的好处

    解耦
    分工合作,开发人员    可以专注于某一层

    可移植性、模块化设计、重用性

    支持分布式系统(基于网络)

    扩展性强、MSSQL、Oracle之间切换

     

    三层:

    UI层

    BLL层(业务逻辑层,得到UI层的数据,返回UI需要的东西。不能出现MessageBox、TextBox等)

    DAL层(DateTable 等都应该在DAL中而不应返回DataTable,返回的都是模型类(实体类)

     

     

    三层总结

    1、UI(User Interface)用户界面

    2、BLL层是具体的业务逻辑操作

    3、DAL层只有 SQL 语句和数据处理,其它层一般不应该出现SQL语句以及和ADO.Net相关的类。BLL 虽然只是简单调用 DAL ,但 BLL 层并不是打酱油的:数据校验应该放到 BLL ; BLL 也会组合 DAL 成新的操作,比如修改密码(得到输入当前密码,经过校验,如果符合就可以更新密码到数据库)

    4、Model 是在三层之间进行数据传递的。UI层调用BLL  、 BLL调用DAL ,数据用 Model 传递,UI不能直接调用 DAL。Model 不是一个层,是一个数据实体

    三层架构一般会比不分层的要慢,但是三层分工明确,可以提高开发效率,牺牲一点点性能也是可以的,很多时候程序的效率也许并不是唯一追求的因素(不是说程序性能不重要,根据实际开发而定)

     

     

    代码生成器

    每次写三层的三个类和Model类的时候,都是重复的写,代码都差不多,因此可以使用代码生成器自动生成。我们完全可以自己写一个适合自己使用的代码生成器(只有自己才知道自己需要什么功能)

    虽然我们可以使用代码生成器生成三层代码,但是我们一开始一定要学会自手动写三层架构的代码,等到能够自己熟练写出三层架构代码以后才可以使用代码生成器(要懂的原理,只有理解了三层架构模式,才能更好的使用代码生成器,因为有些代码生成器不满足实际需求还是要自己修改的)

     

     

  • 相关阅读:
    买点
    正则
    burp回放
    py打包问题
    运行elementUI相关组件的时候的问题
    客户端性能(转载)
    客户端性能(转载)
    关于Appium android input manager for Unicode 提示信息
    selenium 分布式 [WinError 10061] 由于目标计算机积极拒绝
    WPF数据绑定-依赖属性
  • 原文地址:https://www.cnblogs.com/pirates/p/4603727.html
Copyright © 2011-2022 走看看