1

我正在重构一个依赖于 SOAP 服务的服务。不幸的是,SOAP 服务会定期更改。我的服务使用从 SOAP 的 wsdl 文档生成的类。没有任何层可以将 SOAP 服务中定义的实体与我的逻辑分开。换句话说,SOAP 服务泄漏到我的内部,并且它的更改会导致问题。

我想解决这个问题。我正在考虑一种方法,在该方法中,我围绕生成的 SOAP 客户端创建包装器,这将符合我定义的接口。包装器将负责:

  • 将我的界面转换为/从我的界面转换为来自 SOAP 服务的内容以及代理需要的内容
  • 使用包装生成的客户端调用服务

这样,我将限制 SOAP 服务中更改的影响,以便只有包装器受到影响。

我认为这就是它应该根据“端口和适配器”架构工作的方式。这种方法正确吗?我可以做得更好吗?

4

1 回答 1

1

我认为你的方法是完全有效的。

我正在考虑一种方法,在该方法中,我围绕生成的 SOAP 客户端创建包装器,这将符合我定义的接口。

在六边形架构中,您自己定义的接口将是端口,而此端口的一个适配器实现将是您所谓的包装器。这个包装器(即适配器)利用 SOAP 服务与外部世界通信,并确保它符合您的接口(即端口)。

就面向对象的代码而言,端口本身将是一个接口,而适配器将是一个实现该接口的类,它依赖于基础设施——SOAP 客户端。

因此,您的应用程序服务依赖于抽象(端口接口)而不是实现细节(基础设施部分 - 即 SOAP 服务)。

在此处输入图像描述

在实施这种方法时,只需确保您的应用程序层和域层都不直接依赖于基础设施,即适配器,而是依赖于接口(端口)。

于 2020-11-14T21:26:36.047 回答