三层架构概述
三层分为物理上的三层和逻辑上的三层,物理上的三层包括:客户机(PC)、应用服务器、数据库服务器。逻辑上的三层,是我们需要学习的,分为显示层、业务逻辑层、数据访问层。此外还需要用到实体层,它不属于三层中的任意一层,它是独立于其他三个层次的,只能供其他层次进行引用,但是不能引用其他的三个层次。
三层简介:
(1)数据访问层(DAL)
DAL的作用:向数据源加载数据(Select);向数据源写入数据(Insert/Update);从数据源删除数据(Delete)。
(2)显示层(UI)
UI的作用:向用户展现特定业务数据;采集用户的输入信息和操作。
(3)业务逻辑层(BLL)
BLL的作用:从DAL中获取数据,以供UI显示用;从UI中获取用户指令和数据,执行业务逻辑;从UI中获取用户指令和数据,通过DAL写入数据源。
BLL的职责机制:UI ->BLL ->UI;UI->BLL->DAL->BLL->UI
三层应用原则:
(1)DAL只提供基本的数据访问,不包含任何的业务逻辑;
(2)UI只负责显示和采集用户操作,不包含任何业务相关的逻辑处理;
(3)BLL负责处理业务逻辑,通过获取UI传来的用户指令,执行业务逻辑,在需要访问数据源的时候,直接交给DAL进行处理,处理完成后,返回必要数据给UI。
应该注意:DAL/BLL/DAL分别在不同的程序集(Assembly)中,各个层之间的引用关系为
UI->BLL->DAL
即:DAL所在程序集不引用BLL和UI; BLL需要引用DAL ;UI直接引用BLL,可能会间接引用DAL。
三层的具体工作流程:
如果哪一层需要变化,只需要更改该层,不需要更改整个系统。层析清晰,分工明确,每层之间的耦合度降低,是面向对象编程思想的重要应用。
综上,三层架构的
优势:1、结构清晰,耦合度降低;2、可维护性高,可扩展性高;3、利用开发任务同步进行;容易适应需求变化。
劣势:1、降低了系统的性能。这是很明显的,如果不采用分层式结构,很多业务可以直接造访数据库,获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
3、增加了代码量,增加了工作量。
每一种模式都会有它的优势与不足,这是必然的。