15三层架构

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

 

  1. 服务员只需要负责接待客人
  2. 厨师只需要负责烹饪食物
  3. 采购员只需要负责采购食材

 

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

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

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

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

时间: 2024-10-17 03:27:45

15三层架构的相关文章

排球计分(三层架构)

排球比赛计分,现场工作人员 1.  估计时间:一周左右. 2.  开发 需求分析: 作为一个排球比赛的现场工作人员,我需要统计每一名 队员的得分及技术统计,以便颁发每场比赛的最有价值球员奖, 以及确定赛会的最佳阵容. 设计文档: 在界面通过队球员信息进行操作,可以同步到数据库中.查询分数和统计.从数据库中获取运动员分数 设计复审: 自己. 代码规范: c#对设计进行具体操作: 具体设计: Dal层 public int regist(TeamInfo team) { string strcom

排球计分规则之三层架构

需求: 作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录). 计划: 估计此次工作需要一周的时间. 需求分析: 根据用户需求可知我们此次程序需要做到每次分数变化的时候都要记录.当记分员操作之后就要形成记录. 设计文档: 根据<2015-2016赛季中国排球联赛竞赛规程>,计分规则如下: 1.目前的排球比赛采用五局三胜制.前四局每局25分,每局比赛完成后交换场地,达到24分时,必须比赛的双方相差2分才

事务管理在三层架构中应用以及使用ThreadLocal再次重构

本篇将详细讲解如何正确地在实际开发中编写事务处理操作,以及在事务处理的过程中使用ThreadLocal的方法. 在前面两篇博客中已经详细地介绍和学习了DbUtils这个Apache的工具类,那么在本篇中将全部使用DbUtils来编写我们的代码,简化操作嘛,由于本篇主要讲解事务,因此如果不懂事务,可以先看之前的博客<使用JDBC进行数据库的事务操作(1)>和<使用JDBC进行数据库的事务操作(2)>. 在博客<使用JDBC进行数据库的事务操作(2)>中我们已经学习了使用J

排球现场计分员三层架构版

作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录) 每次比分改变将数据库里面的内容随之改变. 计划 估算时间 实际时间 估计这个任务需要多少时间 300min 600min 开发 200min 500min 需求分析 10min 10min 生成设计文档 20min 20min 设计复审 10min 20min 代码规范 10min 10min 具体设计 20min 40min 具体编码 120min

简单的web三层架构系统【第五版】

接上一版,今天差不多就是三层架构后台代码的完结了,这一版写完,接下来就是前台的制作了,前台不太熟悉,还在深入学习.过一段时间在写,今天先把后台代码写完. 三层架构包括DAL层, BLL层, UI层(也就是web层),前几版重点放在DAL上,也就是数据访问层代码的编写.其实BLL层中的代码编写起来容易,真正的要灵活的用起来,还是需要一些算法方面的基础的,BLL业务逻辑层,主要处理逻辑方面的东西,这一层不太涉及也不需要编写数据库中的代码,因为在DAL层中已经编写完成,只需要在BLL中定义使用即可.

C# 三层架构之系统的登录验证与添加数据的实现

利用三层架构体系,实现学生管理系统中用户的登录与添加班级信息的功能,一下代码为具体实现步骤的拆分过程: 一.用户登录界面功能的实现 1.在数据访问层(LoginDAL)进行对数据库中数据的访问操作 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 //引入命名空间 7 using System

C#三层架构(获取中文拼音和给密码加密)

在学习三层架构时,我们在需要获取中文字所获取的拼音,需要引进一个ChnCharInfo.dll的程序文件,并且引用命名空间 using Microsoft.International.Converters.PinYinConverter; 接下来是如何实现拼音的获取: 1 public static string GetPinyins(string name) 2 { 3 //进行拼接字符串 4 StringBuilder sb = new StringBuilder(); 5 //由于Chin

ASP.NET典型三层架构企业级医药行业ERP系统实战

我这里有一套课程和大家分享,我的qq是2059055336,   课程说明: 国内首部完整讲述ERP系统架构.业务逻辑.开发的项目实战课程.考虑到本系统的庞大及复杂性.本课程原价购买学员每人赠送一个U盾设备,U盾可插在任意电脑上进行学习,使用方便,学习灵活!可永久学习! 项目由来: 此项目是讲师亲自参与构架及参与开发的大型ERP项目,此项目已被太阳石药业,九芝堂药业,拜欧药业等多家大中型企业使用,为其创造巨大经济价值.整个项目由10多个研发人员全程打造,项目总价值接近3000万,给企业创造的价值

python 三层架构说明

python 三层架构说明 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(Presentation layer).业务逻辑层(Business Logic Layer).数据访问层(Data access layer). 区分层次的目的即为了"高内聚低耦合"的思想.高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低.内聚就是一个模块内各个元素彼此结合的紧密程度,