11、软件架构中的合约、微服务与代码复用

软件架构中的合约、微服务与代码复用

1. 服务通信中的力与合约概念

在服务通信过程中,每一种起作用的力都可视为一个维度。对于特定决策,架构师可以在空间中绘制代表这些力强度的位置图。从实际角度出发,架构师必须创建矩阵来研究改变这些相互关联的力所产生的影响。

1.1 合约的定义

合约是软件架构中一个贯穿并影响架构师决策几乎所有方面的恒定因素。在软件领域,合约被广泛定义为架构不同部分之间相互连接的方式。其广义定义为:架构各部分用于传达信息或依赖关系的格式。这一定义涵盖了所有用于将系统各部分“连接在一起”的技术,包括框架和库的传递依赖、内部和外部集成点、缓存以及各部分之间的任何其他通信。

1.2 合约的类型

合约在软件架构中从严格到宽松有不同的类型,如下表所示:
| 合约类型 | 特点 | 示例 |
| ---- | ---- | ---- |
| 严格合约 | 要求遵循名称、类型、顺序等所有细节,不留任何歧义 | 远程方法调用(如 Java 中的 RMI)、gRPC |
| 较宽松合约 | 相比基于 RPC 的格式,耦合性更低 | REST、GraphQL |
| 极宽松合约 | 通常表示为 YAML 和 JSON 等格式中的名/值对 | 简单的 JSON 名/值对 |

1.3 严格合约

许多严格合约格式模仿方法调用的语义。例如,开发者会看到许多包含“RPC”(传统上是远程过程调用的缩写)变体的协议,gRPC 就是一个流行的远程调用框架,默认使用严格合约。

严格合约的优点是能够模拟内部方法调用的语义行为,但它会在集成架构中产生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值