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类的时候,都是重复的写,代码都差不多,因此可以使用代码生成器自动生成。我们完全可以自己写一个适合自己使用的代码生成器(只有自己才知道自己需要什么功能)

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

 

 

原文地址:https://www.cnblogs.com/pirates/p/4603727.html