简析三层架构
Posted zsychanpin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简析三层架构相关的知识,希望对你有一定的参考价值。
三层架构——3-tier architecture
1、什么是三层架构
1、什么是三层架构
在软件体系架构设计中,分层式结构是最常见。也是最重要的一种结构。三层从下至上分别为:数据訪问层(DAL)、业务逻辑层(BLL)、表示层(UI)。
表现层(UI):展现给用户的界面。即用户在使用一个系统的时候他的所见所得。
业务逻辑层(BLL):对数据层的操作,对数据业务逻辑处理。
数据訪问层(DAL):对数据库的操作,数据的增添、删除、改动、查找等。
2、应用场景——为什么要用三层架构?
为什么要用三层架构?
解耦。
不是全部的程序都须要使用三层架构。不是必需把简单的问题复杂化。
先来说一下解耦,举例:修电脑
电脑硬盘坏了?我们要做的就是换掉电脑硬盘
内存条坏了?仅仅要换内存条就好
这些部件出现故障,都不会影响别的部件的正常使用,这个就是让他们之间解耦。
而和电脑不同的收音机,不论什么部件坏了。都会影响别的部件,这个体现的就是他们之间的耦合比較高。
从这个样例里面就能够看出解耦的优点,在三层中就是用的解耦的思想。
3、三层作用
数据訪问层:从数据源载入(Select)。写入(Insert/Update),删除(Delete)数据。仅限于和数据源打交道,让程序简单明了。
显示层(UI):向用户展现特定业务数据,採集用户的输入信息和操作。
原则:用户至上。兼顾简洁。
业务逻辑层(BLL):从DAL中获取数据,以供UI显示用,从UI中获取用户指令和数据,运行业务逻辑、从UI中获取用户指令和数据,通过DAL写入数据源。
4、各个层之间的关系:
UI->BLL->UI:UI提供数据指令到业务逻辑。若自己能够搞定,则直接反馈到UI
UI->BLL->DAL->BLL->DAL:UI提供用户指令和数据,提出请求并搜集一定的数据BLL,BLL处理不了时,要訪问数据源。则转给DAL
5、三层联系——引用
以登陆为样例,说明三层之间的引用关系:
实体层(entity):定义的username和password。
U层:向相应的文本框中输入账号和password
B层:推断U层输入的账号和password是否存在。
D层:连接数据库的语句,查询数据库。
他们之间的联系是通过实体传递来进行的。。
DAL所在程序集不引用BLL和UI
BLL须要引用DAL
UI直接引用DAL,可能引用BLL
很忌讳互相引用,为了避免这个问题全部出现了实体层(业务数据模型。里面的数据和数据库的有所差异)
应用原则:
DAL仅仅提供主要的数据訪问,不包括不论什么业务相关的逻辑处理。UI仅仅负责显示和採集用户操作。不包括不论什么的业务相关的逻辑处理,BLL负责处理业务逻辑,通过获取UI传来的操作指令。决定运行业务逻辑。在须要訪问数据源的时候直接交给DAL处理。处理完毕后。返回必要数据给UI。
6、各层是怎样调用的
表示层(UI)是用户须要的界面。用户有什么需求都是在这个上面进行的修改,一旦有修改。首先U层向B层发送用户请求的说明。到达B层,B层再将U层的用户请求发送到D层,D层接受到用户请求的指令后,对它进行处理,发送数据反馈到B层,B层再发给U层,将这一变化反应出来。
举例:
小菜和大鸟吃羊肉串的样例。小菜和大鸟就是用户,服务员为表示层(U层)。烤肉师父为业务逻辑层(U层引用B层的方法或者參数),老板娘为数据訪问层(D层),负责给烤肉师父从库房拿烤串。
大鸟点了羊肉串5串(參数)。服务员把羊肉串5串(參数传递)传递给烤肉师父(数据请求),烤肉师父再传递给老板娘(对參数进行处理),老板娘得到请求后,拿羊肉串给烤肉师父(数据反馈),烤肉师父将烤好的羊肉串给服务员(数据反馈),服务员再将5串羊肉串给大鸟(U层展现出来),他们之间通过调用来实现联系。
7、三层PK二层
二层架构:
业务逻辑简单。没有真正的数据存储层
三层架构:
抽象出业务逻辑层。当业务复杂到一定程度,当数据存储到对应的存储介质,数据存储脱离开业务逻辑,把业务逻辑脱离开UI单独存在,UI仅仅须要呼叫业务訪问层。就能够实现跟用户的交互。
三层的优点:
1、开发者能够仅仅关注整个结构中的当中某一层;
2、能够非常easy的用新的实现来替换原有层次的实现。
3、能够减少层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
6、结构更加的明白
7、在后期维护的时候,极大地减少了维护成本和维护时间。
这几点的中心思想就是“高内聚,低耦合”。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被改动,不会对有关系的类造成波及。
以上是对三层的简单认识。有的地方可能写的不正确。欢迎指出。
以上是关于简析三层架构的主要内容,如果未能解决你的问题,请参考以下文章