文章目录
架构设计学习资料(持续更新)
图书
- 《Software Architecture Patterns》Mark Richards
- 《Fundamentals of Software Architecture》Mark Richards, Neal Ford
Video
- Getting the Basics - Software Architecture Introduction - part 1
- Scaling Distributed Systems - Software Architecture Introduction - part 2
- Distributed Cache explained - Software Architecture Introduction - part 3
架构模式
- Layered Architecture 分层架构模式
- Multi-Tier 多层模式
- Pipe and Filter 管道与过滤器模式
- Client Server 客户端/服务器架构模式
- Model View Controller MVC模式
- Event Driven Architecture 事件驱动架构模式
- Microservices Architecture 微服务架构模式
Layered Architecture 分层架构模式
模式:
- Presentation Layer
- Business Layer
- Persistence Layer
- Database Layer
在DDD分层架构中,将Business Layer再分为:
- Application Service Layer 业务服务层
- Domain Service Layer 领域服务层
优点:
- 容易理解,被广泛使用
- 层与层之间相互解耦,可以独立演进
缺点:
- 分层导致性能损失
适用场景:
- 小型、简单的应用程序或网站
- 快速开发
Multi-Tier 多层模式
模式:
- 和分层架构模式类似
优点:
- 和分层架构一致
缺点:
- 前期成本较大
- 复杂
适用场景:
- 分布式系统
Pipe and Filter 管道与过滤器模式
模式:
- Input:输入
- Process:处理过程
- Output:输入
处理过程的过滤器包括:
- Producer (source): 流程的起点
- Transformer (map):数据转换
- Tester (reduce):测试
- Consumer (sink):终点
优点:
- 处理过程的环节可重用,松耦合
缺点:
- 处理过程环节过多时,会增加复杂性,并降低性能
适用场景:
- 简单单向处理的任务 (比如CI/CD流水线、函数计算、网关Filter,数据预处理等)
Client Server 客户端/服务器架构模式
模式:
- 客户端向服务器发送请求,然后等待回复。
- 服务器接收客户端的请求并向其发送回复。
优点:
- 简单,广泛使用
- “拉”式架构
缺点:
- 服务器可能是性能瓶颈和单点故障 (可通过负载均衡和集群解决)
- 不适合“推”式架构
适用场景:
- Web应用
MVC模式
模式:
- Model: 模型,包含应用的数据
- View:视图,展示数据,并与用户交互
- Controller:控制器,协调模型和视图。
优点:
- 简单,广泛使用
- 现代的MVC模式已经和前后端分离模式结合使用
缺点:
- 依赖于特定MVC开发框架
适用场景:
- Web应用
MVC, MVP and MVVM
MVC | MVP | MVVM | |
---|---|---|---|
组件 | Model, View and Controller | Model, View and Presenter | Model, View and View Model |
特点 | MVC 设计模式将应用程序分为三个主要方面:模型、视图和控制器。 | MVP 模式类似于 MVC 模式。它源自 MVC 模式,其中控制器被演示者取代。这种模式将应用程序分为三个主要方面:模型、视图和演示者。 | MVVM 模式支持 View 和 View-Model 之间的双向数据绑定。这允许将视图模型状态内的更改自动传播到视图。通常,View-Model 使用观察者模式将 View-Model 中的更改通知给模型。j |
入口 | Controller | View | View |
Model | 模型是指需要在视图中显示的数据。模型表示描述业务逻辑(业务模型和数据模型)的类的集合。它还定义了数据方式的业务规则,即如何更改和操作数据。 | 模型表示一组描述业务逻辑和数据的类。它还定义了数据的业务规则,意味着如何更改和操作数据。 | MVVM 中使用的模型类似于 MVC 中使用的模型,由运行软件所需的基本数据组成。 |
View | 视图代表 UI 组件,如 XML、HTML 等。视图显示从控制器接收到的数据作为结果。在 MVC 模式中,View 监视模型的任何状态变化并显示更新的模型。模型和视图使用观察者模式相互交互。 | View 是一个直接与用户交互的组件,如 XML、Activity、Fragment。它不包含任何实现的逻辑。 | View 是用户和设计模式之间的图形界面,类似于 MVC 中的界面。 它显示处理数据的输出。 |
X | 控制器负责处理传入的请求。它通过 Model 处理用户的数据,并将结果传回给 View。它通常充当视图和模型之间的中介。 | Presenter 通过 View 接收用户的输入,然后在 Model 的帮助下处理用户的数据,并将结果传回给 View。 Presenter 通过接口与视图通信。接口在presenter 类中定义,它将所需的数据传递给它。活动/片段或任何其他视图组件实现此接口并以他们想要的方式呈现数据。 | 视图模型负责公开方法、命令和其他有助于维护视图状态、操作模型作为视图操作的结果以及在视图本身中触发事件的属性。 View 有对 View-Model 的引用,但 View-Model 没有关于 View 的信息。 View 和 View-Model 之间是多对一的关系,意味着多个 View 可以映射到一个 View-Model。它完全独立于视图。 视图与视图模型之间的双向数据绑定或双向数据绑定可确保视图模型中的模型和属性与视图同步。 |
References: