三层构架总结
来源:互联网 发布:js淘宝购物车的实现 编辑:程序博客网 时间:2024/06/14 19:53
一、三层结构概念
所谓三层结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里的三层体系,不是物理上的三层,也 不是简单的放在三台机器上就是三层体系结构,也不仅仅有B/S应用才有三层体系结构。三层结构是指逻辑上的三层,是可以放在同一台机器上的。
通用三层结构模型:
中间层通常包括业务逻辑层(Business Logic Layer,简称BLL)、数据访问层(Database Access Layer,简称DAL)和数据对象模型层(Database Object Model Layer,简称DOM)。
而我们通常说的三层结构通常是指数据访问层、业务逻辑层和表示层。
(1)表示层(UI):
位于最上面,展现给用户的界面,即用户在使用一个系统的时候,他的所见所得。只负责显示和采集用户操作,用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。不包含任何业务相关的逻辑处理。
(2)业务逻辑层(BLL):
负责处理业务逻辑,是架构中的核心,处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理,处理完成后,返回必要数据给UI。(1、从DAL中获取数据,以供UI显示用(DAL->BLL->UI);2、从UI中获取用户指令和数据,执行业务逻辑,将结果返回给UI(UI->BLL->UI);3、从UI中获取用户指令和数据,通过DAL写入数据源(UI->BLL-DAL->Bll->UI))
(3)数据层(DAL):
只提供基本的数据访问,与数据源打交道:取数据、写数据、删数据(增(Insert)、删(Delete)、查(Select)、改(Update))。将这些操作封装成函数以供调用即可。是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。
三层之间的数据传递方向
二、为啥需要三层架构?
当业务复杂到一定程度的时候,当你的数据存储在独立的存储介质。
同时本着“高内聚,低耦合”;”开闭原则“,用三层结构更容易复用,扩展,因此这个时候需要使用三层结构。
三层的实际应用:
三、什么情况下需要?
业务逻辑简单,没有真正的数据存储层
四、应用所遵循的原则:
(1)DAL 只 提 供 基 本 的 数 据 访 问 , 不 包 含 任 何 业 务 相 关 的 逻 辑 处 理 ;
(2)UI 只 负 责 显 示 和 采 集 用 户 操 作 , 不 包 含 任 何 的 业 务 相 关 的 逻 辑 处 理 ;
(3)BLL 负 责 处 理 业 务 逻 辑 。 通 过 获 取 UI 传 来 的 操 作 指 令 , 决 定 执 行 业 务 逻 辑 , 在 需 要 访 问 数 据 源 的 时 候 直 接 交 给DAL 处 理 。 处 理 完 成 后 , 返 回 必 要 数 据 给 UI 。
五、三层与实体层之间的关系
为什么会出现实体层?
上面那个图已经很好的展示了,实体层可以理解为一个顾客,三层可以理解为饭店中的服务员,厨师,采购员。饭店就是为顾客服务的,所以必须要有实体层来导向这一步步事件的发生。
六、三层设计的优缺点:
优点:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
缺点:
1、降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
3、增加了开发成本。
- 三层构架总结
- 三层构架
- 三层构架
- 三层构架
- 三层构架
- 什么是三层构架
- 三层构架的理解
- 三层构架的理解
- 三层构架组成
- 什么是三层构架
- delphi三层构架思想
- delphi三层构架思想
- 三层构架/MVC
- 三层构架会完蛋吗
- 剖析ASP.NET三层构架
- .NET三层构架开发实例
- 三层构架,MVC,C/S
- 【转】什么是MVC(三层构架)
- 第十五天H5进阶
- 如何看待 Kotlin 成为 Android 官方支持开发语言?
- MySQL锁——MyISAM锁
- C语言中内存分配
- Hibernate关联关系映射---多对多
- 三层构架总结
- Java中阻塞队列的使用
- 《深入理解java虚拟机》学习笔记8——Tomcat类加载器体系结构
- 河南省第十届ACM省赛G:Plumbing the depth of lake
- 【模板】快速幂
- Java动态化实例类
- CSDN博客收藏
- 个人学习(六)
- Linux 命令-文件备份和压缩命令