一、概念
1、UI(表现层)
通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。用于接收用户输入的数据和显示处理后用户须要的数据。
2、BLL:(业务逻辑层)
UI层和DAL层之间的桥梁。:针对详细问题的操作,也能够说是对数据层的操作,对数据业务逻辑处理。业务逻辑详细包括:验证、计算、业务规则等等。
3、DAL:(数据訪问层)
与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同一时候将业务层处理的数据保存到数据库。
二、原理
用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)
三、各层的作用
1、表示层
主要表示WEB方式,也能够表示成WINFORM方式,WEB方式也能够表现成:aspx,假设逻辑层相当强大和完好,不管表现层怎样定义和更改,逻辑层都能完好地提供服务。
2、业务逻辑层
主要是针对详细的问题的操作,也能够理解成对数据层的操作,对数据业务逻辑处理,假设说数据层是积木,那逻辑层就是对这些积木的搭建。
3、数据訪问层
主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,详细为业务逻辑层或表示层提供数据服务.
四、原则
1、分层就意味着组建的逻辑分组。比如,对用户界面,业务逻辑和数据訪问组建应该使用不同的不同的层。
2、在一个层内组建应该聚合的。如业务层组建仅应提供与业务逻辑相关的操作,而不是提供其它操作。
3、在设计的每个层接口时要考虑好物理边界。假设通信跨越了物理边界,使用基于消息操作;否则使用基于对象操作。
4、考虑使用接口类型(interface)来定义每层的接口。这将同意你创建该接口的不同实现,提高可測性。
5、对于Web应用程序,在表示层和业务逻辑层之间实现基于消息的接口是一个好主意,即使这两层没有跨越物理边界。基于消息的接口更适合于无状态的Web操作。
6最基本的就是不能跨层调用。各层之间通过參数来传递,也就是实体类。
五、三层架构的优缺点
(1)长处
1、开发者能够仅仅关注整个结构中的当中某一层;
2、能够非常easy的用新的实现来替换原有层次的实现;
3、结构清晰,耦合度低;
4、有利于标准化;
5、利于各层逻辑的复用。
6、结构更加的明白
7、在后期维护的时候,极大地减少了维护成本和维护时间
(2)缺点
1、减少了系统的性能。
这是不言而喻的。假设不採用分层式结构,非常多业务能够直接造訪数据库,以此获取对应的数据,现在却必须通过中间层来完毕。
2、有时会导致级联的改动。
这样的改动尤其体如今自上而下的方向。假设在表示层中须要添加一个功能,为保证其设计符合分层式结构,可能须要在对应的业务逻辑层和数据訪问层中都添加对应的代码。
3、添加了开发成本。
六、与二层比較
1、二层
(当不论什么一个地方发生变化时,都须要又一次开发整个系统。“多层”放在一层,分工不明白耦合度高——难以适应需求变化,可维护性低、可扩展性低)
2、三层:
(发生在哪一层的变化,仅仅需更改该层,不须要更改整个系统。层次清晰,分工明白,每层之间耦合度低——提高了效率,适应需求变化,可维护性高,可扩展性高)
七、与MVC比較
1、概念不同
三层架构是一个分层式的软件体系架构设计,它可适用于不论什么一个项目。
MVC是一个设计模式,它是依据项目的详细需求来决定是否适用于该项目。
2、目的不同
三层架构的目的着重点是“高内聚,低耦合”,即解耦。
MVC的目的则是实现Web系统的职能分工,即职责划分。
3、层次不同
MVC是Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完毕页面逻辑,通过实体来与界面层完毕通话;而C层直接与三层中的BLL进行对话。