有关将模块与目标隔离的概述

在开发模块时,您将标识可以由多个模块使用的服务。以此方式使用服务可以最大程度地缩短开发周期并降低开发成本。如果一个服务由许多模块使用,则应该将调用模块与目标隔离,这样,即使将目标升级,切换到新服务的行为对于调用模块来说也是透明的。本主题对简单调用模型和隔离调用模型作了概述,并提供了一个示例来说明隔离的用途。特定的示例中描述的方法,并不是将模块与目标隔离的唯一方法。

简单调用模型

在开发模块时,可以使用其他模块中的服务,这是通过将该服务导入到该模块中并调用该服务实现的。导入的服务将连接到由 WebSphere® Integration Developer 中的另一模块导出的服务或者通过在管理控制台中绑定该服务导出的服务。简单调用模型对此模型进行了说明。
图 1. 简单调用模型此图显示应用程序 MyModule 调用服务 ServiceA。此调用指向应用程序中的导入接口,该接口连接到应用程序 DifferentModule 中 ServiceA 中的导出接口。

隔离调用模型

要在不停止调用模块的情况下更改调用目标,请将调用模块与调用目标隔离。这样,由于更改的是下游目标而不是模块本身,所以,在更改目标期间,模块可以继续执行处理。应用程序隔离示例说明了隔离使您能够在不影响调用模块状态的情况下更改目标。

应用程序隔离示例

在使用单一调用模型时,多个调用同一服务的模块就像是多个调用单一服务的应用程序。ModA、ModB 和 ModC 全都调用 CalculateFinalCost。
图 2. 多个调用单一服务的应用程序此图显示了多个直接调用 CalculateFinalCost 的模块。
CalculateFinalCost 提供的服务需要进行更新,以使新成本反映在所有使用该服务的模块中。开发小组构建并测试新服务 UpdatedCalculateFinal 以合并更改。您已准备好在生产环境中使用新服务。在未进行隔离时,必须将所有调用了 CalculateFinalCost 的模块更新为调用 UpdateCalculateFinal。进行隔离后,只需要更改用于将缓冲模块连接到目标的绑定。
注: 如果以此方式更改服务,就可以继续向其他需要使用原始服务的模块提供该服务。
进行隔离后,就在应用程序与目标之间创建了缓冲模块(请参阅调用了 UpdateCalculateFinal 的隔离调用模型)。
图 3. 调用了 UpdateCalculateFinal 的隔离调用模型此图显示调用了 CalculateFinalCost 的 ModA、ModB 和 ModC。此调用是在包含名为 CalculateFinalCost 的服务的应用程序 BufferMod 中解析的。此服务仅仅指向应用程序 ActualMod 中的实际 CalculateFinalCost。
对于此模型,调用模块不更改,而只需要更改从缓冲模块导入到目标的绑定(请参阅调用了 UpdatedCalculateFinal 的隔离调用模型)。
图 4. 调用了 UpdatedCalculateFinal 的隔离调用模型此图与上图类似,它也包含从 BufferMod 中的 CalculateFinalCost 指向 UpdateFinalCost
的绑定。
如果缓冲模块以同步方式调用目标,在重新启动缓冲模块(无论是调解模块还是业务模块服务)时,返回到原始应用程序的结果都来自新目标。如果缓冲模块以异步方式调用目标,则下次进行调用时,返回到原始应用程序的结果将来自新目标。

使用条款 |


(c) Copyright IBM Corporation 2005, 2006.
本信息中心基于 Eclipse 技术(http://www.eclipse.org)。