三层架构
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。
![](https://i-blog.csdnimg.cn/blog_migrate/8a9c31dfdc9bb9b2422b57ecc6021f9f.jpeg)
三层的作用
1:数据访问层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:界面层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
三层的优缺点
优点 | 缺点 |
---|---|
开发人员可以只关注整个结构中的其中某一层; | 降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成; |
可以很容易的用新的实现来替换原有层次的实现; | 有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码; |
可以降低层与层之间的依赖; | 增加了开发成本 |
有利于标准化; | |
利于各层逻辑的复用。 |
软件开发分层的好处
![](https://i-blog.csdnimg.cn/blog_migrate/d55a73b58c9d864744bf95b1f52d9dcc.png)
- 伸缩性:伸缩性指应用程序是否能支持更多的用户。
- 例如,在双层GUI应用程序中,通常对每个用户都提供一个数据库连接,如果有10000个用户, 则需要建立10000个数据库连接。而在三层结构中,可采用数据库连接池机制,用少量数据库连接支持多个用户。应用的层越少,可以增加资源(如CPU和内 存)的地方就越少。层数越多,可以将每层分布在不同的机器上,例如,在一组服务器作为Web服务器,一组服务器处理业务逻辑,还有一组服务器作为数据库服 务器。
- 维护性:维护性指的是当发生需求变化,只需要修改软件的某一部分,不会影响其他部分的代码。
- 层数越多,维护性也会不断提高,因为修改软件的某一层的实现,不会影响其他层。
- 扩展性:扩展性指的是在现有系统中增加新功能的难易程度。
- 层数越少,增加新功能就越容易破坏现有的程序架构。层数越多,就可以在每个层中提供扩展点,不会打破应用的整体架构。
- 重用性:重用性指的是程序代码没有冗余,同一个程序能满足多种需求。
- 例如,业务逻辑层可以被多种表述层共享,既支持基于GUI的表述层,也支持基于Web页面的表述层。代码的重用可以减少开发人员重复繁琐的工作,提高开发效率。
- 管理性:管理性指的是管理系统的难易程度。
- 将应用程序分为多层后,可以将工作分解给不同的开发小组,从而便于管理。应用越复杂,规模越 大,需要的层就越多。软件分层后,各个开发小组只需要掌握该层需要的技术,可以高效率的并行开发,这是加快开发速度,保证项目开发进度的最好办法。
-