Skip to Content
软件架构:核心挑战
book

软件架构:核心挑战

by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
May 2025
Beginner to intermediate
462 pages
5h 45m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 软件架构:核心挑战

第 13 章 合同 合同

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

Friday, April 15, 12:01

Addison 与 Sydney 在自助餐厅共进午餐时,聊起了 Ticket Orchestrator 与票务管理工作流程集成服务之间的协调 。

"为什么不使用 gRPC 进行所有通信呢?我听说它非常快,"悉尼说。

"艾迪森说:"这只是一种实施,而不是一种架构。"在选择如何实施之前,我们需要确定我们需要哪种类型的合约。首先,我们需要决定是严密合约还是宽松合约。一旦我们决定了类型,我就会让你们决定如何实现它们,只要它们能通过我们的拟合函数。"

"是什么决定了我们需要什么样的合同?"希尼说。

第 2 章中,我们开始讨论三个 重要力量的交叉点--沟通、一致性和协调--以及如何对它们进行权衡。 我们在一个连接的三维空间中模拟了这三种力量的交叉空间,如图 13-1 所示。在第 12 章中,我们再次讨论了这三种力量,并讨论了各种沟通方式及其权衡。

无论建筑如何辨别这种关系,有些力量还是会跨越概念空间,对所有其他维度产生同等影响。如果用视觉上的三维隐喻来解释,这些交叉的力量就像是一个额外的维度,就像时间与三个物理维度是正交的一样。

3d space showing three dimensions of messaging
图 13-1. 分布式架构中信息传递力量的三维交叉空间

在软件架构中,有一个不变的因素贯穿并影响着架构师决策的几乎每一个方面,那就是契约,广义上的契约是指架构的不同部分如何相互连接。合同在字典中的定义如下:

合同

旨在通过法律强制执行的书面或口头协议,尤其是有关就业、销售或租赁的协议。

在软件中,我们广泛使用合约来描述架构中的集成点等事物,许多合约格式都是软件开发设计流程的一部分:SOAP、REST、gRPC、XMLRPC 以及其他一些字母缩略词。不过,我们扩大了定义的范围,使其更加一致:

硬部件合同

体系结构各部分用来传递信息或依赖关系的格式。

合同的定义涵盖了用于将系统各部分 "连接 "在一起的所有技术,包括框架和库的传递依赖关系、内部和外部集成点、缓存以及各部分之间的任何其他通信。

本章说明了合约对架构许多部分的影响,包括静态和动态量子耦合,以及提高(或降低)工作流有效性的方法。

严格合同与宽松合同

就像软件架构中的许多东西一样,合同并不存在于 的二进制中,而是存在于从严格到宽松的广泛范围内。图 13-2使用合同类型示例说明了这一范围。

spectrum of contract types
图 13-2. 从严格到宽松的合同类型谱系

严格的契约要求遵守名称、类型、排序和所有其他细节,不留任何模糊之处。软件中最严格契约的一个例子是远程方法调用,使用的是平台机制,如 Java 中的 RMI。在这种情况下,远程调用模仿内部方法调用,匹配名称、参数、类型和所有其他细节。

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

许多架构师喜欢严格合约,因为它们可以模拟内部方法调用的相同语义行为。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

掌握API架构

掌握API架构

James Gough, Daniel Bryant, Matthew Auburn
SQL经典实例(第2版)

SQL经典实例(第2版)

Anthony Molinaro, Robert de Graaf

Publisher Resources

ISBN: 9798341656741