# 分层架构
分层架构(layered architecture)是常见的软件架构,也是事实上的标准架构,如果说你不知道用什么架构,那么最简单的就是使用这种架构方式。
这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的具体细节,层和层之间通过接口通信。
虽然没有明确约定,软件一定要分成多少层,但是四层的结构是最常见的了。
![四层架构](https://box.kancloud.cn/aed0ef3893476aa4f8fc7c57be63a181_750x561.png)
> * 表现层(Presentation Layer):用户界面,负责和用户互动
> * 业务层(Bussiness):实现业务逻辑
> * 持久层(Persistence):提供数据,SQL语句就放在这一层
> * 数据层(Database):保存数据
有的软件在逻辑层和持久层之间,增加了一个服务层(Service),提供不同业务逻辑需要的一些通用接口。
用户的请求将以此通过这四层的处理,不能跳过其中的任何一层。
![](https://box.kancloud.cn/c2baf8516481ce079bd238d4d2322b78_750x511.png)
优点
> * 结构简单,容易理解和开发
> * 不同技能的程序员可以分工,负责不同的层,天然适合大多数软件公司的组织架构
> * 每一层都可以独立测试,其它层的接口通过模拟解决
缺点
> * 一旦换件发生变化,需要代码调整或增加功能的时候,通常比较麻烦和费时
> * 部署比较麻烦,即使只修改一个小地方,往往需要整改软件重新部署,不容易做持续发布
> * 软件升级时,可能需要整改服务暂停
> * 扩展性差。用户请求大量增加的时候,必须依次扩展每一层,由于每一层内部是耦合的,扩展会很困难