我正在重构一个依赖于 SOAP 服务的服务。不幸的是,SOAP 服务经常发生变化。我的服务使用从 SOAP 的 wsdl 文档生成的类。没有任何层可以将 SOAP 服务中定义的实体与我的逻辑分开。换句话说,SOAP 服务泄漏到我的服务中,并且它的更改会导致问题。
我想解决这个问题。我正在考虑一种方法,在生成的 SOAP 客户端周围创建包装器,该包装器将符合我定义的接口(interface)。包装器将负责:
- 将我的界面转换为来自 SOAP 服务的内容以及代理所需的内容
- 使用封装的生成客户端调用服务
这样我就可以限制 SOAP 服务中更改的影响,以便只有包装器受到影响。
我认为这就是它根据“端口和适配器”架构应该如何工作的方式。这种做法正确吗?我可以做得更好吗?
最佳答案
我认为你的方法完全有效。
I'm considering an approach in which i create wrappers around the generated SOAP clients which would conform to an interface defined by me.
在六边形架构中,由您定义的接口(interface)将是端口和一个适配器 该端口的实现将是您所说的包装器。这个包装(即适配器)利用 SOAP 服务与外界通信,并确保它符合您的接口(interface)(即端口)。
就面向对象代码而言,端口本身将是一个接口(interface),而适配器将是实现此接口(interface)的类,该类依赖于基础结构 - SOAP 客户端。
因此,您的应用程序服务依赖于抽象(端口接口(interface))而不是实现细节(基础设施部分 - 即 SOAP 服务)。
实现此方法时,只需确保您的应用程序层和域层都不直接依赖于基础设施(即适配器),而是依赖于接口(interface)(端口)。
关于web-services - 依赖于 SOAP API 的服务设计发生了很大变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64834085/