首先,我们这里所说的三层架构是指逻辑上的划分,并不是物理上的划分方式。区分层次的目的即为了“高内聚,低耦合”的思想。使用三层架构,必然有很多的好处和优点,但并不是所有的都必须用三层。对于比较业务逻辑简单,没有真正的数据存储的项目系统,就不需要用三层了。
三层具体是指表现层,也叫显示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。下面分别介绍一下这三层:
1、表现层UI
表现层是呈现给用户的,因此其设计与构想要符合用户的偏好和风格。“用户至上,兼顾简洁”是一个不变的原则。
回想我们做VB小例子的时候,Form1就是最终运行的时候呈现出来的界面,我们可以通过它来输入密码登录,也可以通过它获取信息。UI的作用跟它差不多作用无非就是输入和输出,即向用户展现特定业务数据,采集用户的输入信息和操作。
表现层只负责这两个大的功能,而对于显示的数据是怎么来的、又是如何工作的,它都不用考虑。
2、业务逻辑层BLL
很多人把业务逻辑层看作是三层的核心,这也说明了它在体系架构中的关键位置,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。
它的作用也可大概分为两个:一是从数据访问层DAL获取数据,供UI显示;一是对从UI得到用户的指令和数据,进行业务逻辑处理,然后写入DAL数据源。比如,用户输入用户名和密码进行登录,BLL层就负责对其进行业务逻辑处理,然后DAL层查看是否存在该用户。
3、数据访问层DAL
数据访问层主要是与数据源打交道,负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。具体包括:从数据源加载数据,向数据源写入数据,从数据源删除数据。
简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。
通过对三层概念的了解,我们对它们各层的联系就会有一个大致的了解。总结一下如下:
UI只负责显示和采集用户操作,不包含任何业务相关的逻辑处理。
BLL负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI。
DAL提供基本的数据访问,不包含任何业务相关的逻辑处理。
它们分别处在不同的程序集中,但各个层之间存在一定的引用关系。引用是什么意思呢?引用是项目之间的一个桥梁和通道,借助于引用,我们可以使得各层之间有了联系。但是引用也有禁忌,不能循环引用。比如A引用B,那么B就不可以引用A。
UI直接引用BLL,可能会间接引用DAL。
BLL引用DAL。
DAL不引用UI和BLL。
各层为什么要引用为什么不引用是和它们的功能和作用直接相关的。在这里就不赘述了。
除了这些引用关系,还有一个重要的角色没有出场,那就是Model数据模型。数据模型的作用是封装数据,在三层之间传输数据。它并不知道各个层次,是独立于各个层次的。因此它不会引用各层,但其他层需要引用它。
说到三层,大家经常把三层与MVC放在一起比较。虽然他们都是在分层,都是在解耦。但其实他们根本不是一个概念。三层架构将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。而
MVC分为Model(模型),View(视图),Controller(控制)。它的目的是职责划分。
三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目。MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目。
我们一般是在考虑使用了三层架构的基础上再根据具体需求决定是否需要使用MVC,所以MVC中总是伴随着三层架构,所以大家总是会认为MVC就是三层架构,三层架构就是MVC,殊不知,它们二者是一起出现的。