架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。
数据流风格
优点
松耦合【高内聚-低耦合】
良好的重用性/可维护性
可扩展性【标准接口适配】
良好的隐蔽性
支持并行
缺点
交互性差
复杂性高
性能较差(每个过滤器都需要解析与合成数据)
典型实例
传统编译器
网络报文处理
数据流风格两大分类
批处理序列:大量整体数据、无需用户交互
管道-过滤器:流式数据、弱用户交互
返回/调用风格
返回/调用风格主要分为三类
主程序/子程序:面向过程
面向对象:对象的方法调用
分层:层与层之间的方法调用
常用的为分层架构风格,详见搬砖方法论:分层策略
优点
良好的重用性,只要接口不变可用在其它地方
可维护性好
可扩展性好,支持递增设计
缺点
并不是每个系统都方便分层
很难招到一个合适的、正确的层次抽象方法
不同层次之间耦合度高的系统很难实现
特点
各个层次的组件形成不同功能级别的虚拟机
多层相互协同工作,而且实现透明
独立构建风格
优点
松耦合
良好的重用性、可修改性、可扩展性
缺点
构建放弃了对系统计算的控制。一个构建触发一个事件时,不能确定其他构建是否会响应它。而且即使它知道事件注册了哪些构建的过程,它也不能保证这些过程被调用的顺序。
数据交换的问题
既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。
特点
系统由若干子系统构成且称为一个整体
系统有统一的目标
子系统有主从之分
每一子系统有自己的事件收集和处理机制
虚拟机风格
以数据为中心风格
闭环控制架构风格(过程控制)
适合于嵌入式系统,用于解决简单闭环控制问题。
经典应用:空调温控,定速巡航。
C2风格
基本规则
构建和连接件都有一个顶部和一个底部。
构建的顶部要连接到连接件的底部,构建的底部要连接到连接件的顶部,构建之间不允许直接连接
一个连接件可以和任意数目的其他构件和连接件连接。
当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。
层次架构风格
MVC架构风格
Model 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View 是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller 是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVP架构风格
MVP是MVC的变种
MVP实现了V与M之间的解耦(V不直接使用M,修改V不会影响M)
MVP更好的支持单元测试(业务逻辑在P中,可以脱离V来测试这些逻辑,可以将一个P用于多个V,而不需要改变P的逻辑)
MVP中V要处理界面事件,业务逻辑在P中,MVC中界面事件由C处理
MVVM架构风格
RIA架构风格
反应速度快
易于传播
交互性强
基于服务的架构(SOA)
服务是一种为了满足某项业务需求的操作、规则等的逻辑组合,它包含一系列有序活动的交互,为实现用户目标提供支持。
服务构件粗粒度,传统构件细粒度居多
服务构件的接口是标准的,主要是WSDL接口,传统构件常以具体API形式出现
服务构件的实现与语言无关,传统构件绑定某种特定语言
服务构件可以通过构件容器提供QoS的服务,传统构件完全由程序代码直接控制
SOA的实现方式——WebService
底层传输层
服务通信协议层
服务描述层
服务层
业务流程层
服务注册层
SOA的实现方式——ESB
服务请求者与服务提供者之间解耦
提供位置透明性的消息路由和寻址服务
提供服务注册和命名的管理功能
支持多种的消息传递范型
支持多种可以广泛使用的传出协议
支持多种数据格式及其相互转换
提供日志和监控功能
关键技术
微服务架构风格
优点
小服务【专注于一件事】
轻量级的通讯机制
松耦合
独立测试
独立部署【简单部署】
独立运行【每个服务独立在独立进程中】
支持异构【例如每个服务使用不同数据库】
更好的可用性与弹性
化整为零,易于小团队开发
缺点
分布式环境下的数据一致性【更复杂】
测试的复杂性【服务间依赖测试】
运行的复杂性
微服务与SOA对比
云原生架构风格
【云原生】是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。
云原生架构设计原则
服务化原则
弹性原则
可观测原则
韧性原则
自动化原则
MDA架构风格
MDA的3种核心模型
平台独立模型(PIM):具有高抽象层次、独立于任何实现技术的模型。
平台相关模型(PSM):为某种特定实现技术量身定做,让你用这种技术中可用的实现构造来描述系统的模型。PIM会被变换成一个或多个PSM。
代码Code:用源代码对系统的描述(规约)。每个PSM都将被变换成代码。
ADL架构风格
ADL是这样一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。如:Aesop、MetaH、C2、Rapide、SADL、Unicon等。
ADL的三个基本元素
构建:计算或数据存储单元、
连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则。
架构配置:描述体系结构的构件与连接件的连接图。
评论区