Web services 设计一个依赖于soapapi的服务,该服务变化很大

Web services 设计一个依赖于soapapi的服务,该服务变化很大,web-services,soap,clean-architecture,hexagonal-architecture,Web Services,Soap,Clean Architecture,Hexagonal Architecture,我正在重构一个依赖于SOAP服务的服务。不幸的是,SOAP服务经常变化。我的服务使用从SOAP的wsdl文档生成的类。没有任何层可以将SOAP服务中定义的实体与我的逻辑分开。换句话说,SOAP服务泄漏到我的服务中,它的更改会导致问题 我想解决这个问题。我正在考虑一种方法,在这种方法中,我围绕生成的SOAP客户机创建包装器,该包装器将符合我定义的接口。包装商将负责: 将我的接口转换为/从我的接口转换为SOAP服务提供的内容以及代理需要的内容 使用包装生成的客户端调用服务 通过这种方式,我将限制

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

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

  • 将我的接口转换为/从我的接口转换为SOAP服务提供的内容以及代理需要的内容
  • 使用包装生成的客户端调用服务
通过这种方式,我将限制SOAP服务中更改的影响,以便只影响包装器


我认为根据“端口和适配器”体系结构,它应该是这样工作的。这种方法正确吗?我能做得更好吗?

我认为你的方法非常有效

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

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

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

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

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