(1/5)软件架构入门-分层架构


软件架构(software architecture)就是软件的基本结构。

合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。

一、分层架构

分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。

这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。

虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

(1/5)软件架构入门-分层架构_第1张图片

表现层(presentation):用户界面,负责视觉和用户互动

业务层(business):实现业务逻辑

持久层(persistence):提供数据,SQL 语句就放在这一层

数据库(database) :保存数据


有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。

用户的请求将依次通过这四层的处理,不能跳过其中任何一层。


(1/5)软件架构入门-分层架构_第2张图片

优点

结构简单,容易理解和开发

不同技能的程序员可以分工,负责不同的层,天然适合大多数软件公司的组织架构

每一层都可以独立测试,其他层的接口通过模拟解决

缺点

一旦环境变化,需要代码调整或增加功能时,通常比较麻烦和费时

部署比较麻烦,即使只修改一个小地方,往往需要整个软件重新部署,不容易做持续发布

软件升级时,可能需要整个服务暂停

扩展性差。用户请求大量增加时,必须依次扩展每一层,由于每一层内部是耦合的,扩展会很困难


我的看法:(仅代表个人观点)

1.适合大多数小项目框架,开发成本可控,可维护性合理。(java系有非常经典的struts2、spring mvc)

2.适合功能内聚,对外依赖较小的项目。

3.对非功能性需求(如性能、安全性)较高的项目需要有其他工具配合才能满足需求。

4.对于大项目来说,力不从心。需要更高维度的架构来解决。


上面是引用了阮老师的文章。稍后提供链接。

你可能感兴趣的:((1/5)软件架构入门-分层架构)