web-services - 依赖于 SOAP API 的服务设计发生了很大变化

标签 web-services soap clean-architecture hexagonal-architecture

我正在重构一个依赖于 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 服务)。

enter image description here

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

关于web-services - 依赖于 SOAP API 的服务设计发生了很大变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64834085/

相关文章:

java - 我无法理解鲍勃叔叔书中的整洁架构部分(MVP)

java - Apache CXF : get XML request causing Fault

java - 身份验证 Spring SOAP 到 Workday

android - 在带有 RxJava : How can you keep the presenter free of any android knowledge while still observing on the UI thread? 的 Android 上使用整洁的 MVP

c# - 如果需要使用启动项目,如何在使用 Clean Architecture 的同时创建 EF Core 迁移?

java - Apache CXF : get SOAP message inside service method

web-services - 使用Grails Cxf客户端插件设置disableCNCheck

web-services - Symfony2 网站和 RESTful API

java - 打包 REST 网络服务

java - 需要有关 soap over smtp 的信息