在开发模块时,您将标识可以由多个模块使用的服务。以此方式使用服务可以最大程度地缩短开发周期并降低开发成本。如果一个服务由许多模块使用,则应该将调用模块与目标隔离,这样,即使将目标升级,切换到新服务的行为对于调用模块来说也是透明的。本主题对简单调用模型和隔离调用模型作了概述,并提供了一个示例来说明隔离的用途。特定的示例中描述的方法,并不是将模块与目标隔离的唯一方法。
应用程序隔离示例
在使用单一调用模型时,多个调用同一服务的模块就像是
多个调用单一服务的应用程序。ModA、ModB 和 ModC 全都调用 CalculateFinalCost。
图 2. 多个调用单一服务的应用程序
CalculateFinalCost 提供的服务需要进行更新,以使新成本反映在所有使用该服务的模块中。开发小组构建并测试新服务 UpdatedCalculateFinal 以合并更改。您已准备好在生产环境中使用新服务。在未进行隔离时,必须将所有调用了 CalculateFinalCost 的模块更新为调用 UpdateCalculateFinal。进行隔离后,只需要更改用于将缓冲模块连接到目标的绑定。
注: 如果以此方式更改服务,就可以继续向其他需要使用原始服务的模块提供该服务。
对于此模型,调用模块不更改,而只需要更改从缓冲模块导入到目标的绑定(请参阅
调用了
UpdatedCalculateFinal 的隔离调用模型)。
图 4. 调用了 UpdatedCalculateFinal 的隔离调用模型
如果缓冲模块以同步方式调用目标,在重新启动缓冲模块(无论是调解模块还是业务模块服务)时,返回到原始应用程序的结果都来自新目标。如果缓冲模块以异步方式调用目标,则下次进行调用时,返回到原始应用程序的结果将来自新目标。