三层架构(一)——什么是三层架构?

 一、什么是三层架构?

1、概念

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

分层(tier)

概念

表现层(UI)

通俗讲就是展现给用户的界面,用于显示数据和接受用户输入的数据;即用户在使用一个系统的时候他的所见所得。

业务逻辑层(BLL)

针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。是表示层和数据访问层之间的桥梁。

数据访问层(DAL)

该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

数据库实体类(Entity)

对数据对象进行封装,也有一些简单的功能

各层的作用

分层(tier)

概念

表现层(UI)

主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

业务逻辑层(BLL)

主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

数据访问层(DAL)

主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.

由上表可以看出,多出的一个数据库实体类(Entity),他在三层中并不是作为一层而存在的,而是作为一个类库,起到封装数据库表的作用。

   2、各层及类库之间的联系

   用一张图来表示:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芋道源码1024

告诉你 Redis 是一个牛逼货

Redis 是一个 Key-Value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、 list...

1310
来自专栏SeanCheney的专栏

深入理解Python异步编程(上)

彻底理解异步编程是什么、为什么、怎么样。深入学习asyncio的基本原理和原型,了解生成器、协程在Python异步编程中是如何发展的。

5162
来自专栏腾讯移动品质中心TMQ的专栏

【腾讯TMQ】和开发一起写代码,让测试左移起来

软件工程中有提到测试人员越早的介入到研发的流程当中,就可以越早的发现问题,从而降低发现问题的成本。因此"左移"变得非常的有必要了起来,当然左移的方式有很多,例如...

5550
来自专栏纯洁的微笑

一次内存溢出的排查经历

OutOfMemoryError 问题相信很多朋友都遇到过,相对于常见的业务异常(数组越界、空指针等)来说这类问题是很难定位和解决的。

2212
来自专栏FreeBuf

一种几乎无法被检测到的Punycode钓鱼攻击,Chrome、Firefox和Opera等浏览器都中招

国内的安全专家最近发现一种新的钓鱼攻击,“几乎无法检测”,即便平时十分谨慎的用户也可能无法逃过欺骗。黑客可利用Chrome、Firefox和Opera浏览器中的...

2329
来自专栏令仔很忙

【JVM调优】----内存溢出和内存泄漏

项目的开发,涉及到了服务器的运维,先来介绍下JVM相关的知识,也方便后期的使用。今天主要是说一说内存溢出和内存泄漏两件事。

1221
来自专栏Zephery

谈谈个人网站的建立(四)—— 日志系统的建立

谈谈个人网站的建立(四)—— 日志系统的建立 欢迎访问我的网站http://www.wenzhihuai.com/ 。感谢,如果可以,希望能在GitHub上给个...

3734
来自专栏博客园迁移

工作中的一些经验小结

控制层   返回值统一 AOP 也方便前台 AOP 统计执行时间记录日志   参数不要出现Request, Response   返回码定义 不...

732
来自专栏腾讯移动品质中心TMQ的专栏

和开发一起写代码,让测试左移起来

一、写在前面的话 互联网产品的迭代速度之快,各位都深有体会。做为产品质量的保障者,测试人员经常为测试时间不足而烦恼,如何打破现状来让现在变得更好一些,这是我们一...

2377
来自专栏腾讯NEXT学位

《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结

1362

扫码关注云+社区

领取腾讯云代金券