我正在Mule中构建一个REST API,在后端编排多个SOAP Web服务,以获取所需的数据作为JSON返回给REST API的请求。
我使用JAXB将我的SOAP响应转换为DTO,然后将JAXB DTO映射到一组Jackson DTO,用于使用脚本转换器将一个结构映射到JSON序列化为JSON其他。类似于反腐败层,将一个上下文映射到另一个上下文。
但是我一直在阅读使用Canonical Data Model来松散地耦合不同的数据结构。
这是使用规范数据模型的有效用例吗?
这个额外的层有什么好处吗?我看到它的方式,如果后端SOAP服务发生变化,我仍然只需要改变一个变换器。
答案 0 :(得分:3)
当您需要不同的应用程序或流使用通用数据类型时,将使用规范数据模型。重点是应用程序或流程的可重用性。
由于您正在封装SOAP服务,因此如果它们是互斥的点对点调用而不是来自Mule流的聚合响应,则无需为后端SOAP服务创建CDM。
如果以下条件为真,您可以在应用内部使用CDM。
在这种情况下,您可以将每个SOAP调用的数据转换为CDM,然后使用公共处理流程,然后将响应发送回REST调用者。
一般最佳做法是在入站端点之后立即将数据转换为通用格式进行处理,然后在出站端点之前将其转换为特定格式。当您在应用程序中有多个入站或多个出站端点时,将应用这些。