规范数据模型

时间:2015-02-18 11:37:49

标签: mule canonicalization enterprise-integration

我正在构建一个公开Rest API的应用程序,并在后端上传递和编排多个SOAP服务,以构建对REST API的响应。我一直在阅读Canonical Data Models以及它们如何帮助我松散地结合这些后端SOAP服务。

我应该在我的Rest API和后端服务之间使用规范数据模型吗?

目前,使用JAXB将后端SOAP响应解组为Java对象。然后我使用脚本将jaxb对象映射到一个地图,该地图表示我想要作为JSON返回的结构,并通过我的Rest API简单地将Map转换为Json。

所以SOAP - > jaxb Java对象 - > Java Map(代表JSON) - > JSON

我应该在这里为Canonical Model添加另一个步骤吗?

所以SOAP - > jaxb Java对象 - > CANONICAL MODEL不代表SOAP或JSON结构 - > Java Map(代表JSON) - > JSON

这是否适合CDM?或者添加这个额外的级别是多余的?

2 个答案:

答案 0 :(得分:0)

我认为你在谈论在你和服务之间建立一个外观而不是CDM。 您可以将jaxb生成的对象映射到内部对象,对这些对象执行应用程序逻辑,然后将这些对象映射到表示JSON接口的对象。 jaxb-internal映射将使您的应用程序与您正在使用的接口分离。 内部到json映射将使您向消费者公开的接口与内部对象分离。

这是否值得,取决于环境的复杂程度,成本和成本。改变的可能性是。例如,与共享和公开成熟且版本化的规范模型的服务紧密耦合可能是可以接受的。如果您正在使用一组ad-hoc或第三方接口,那么这是一个非常不同的风险概况。

答案 1 :(得分:0)

据我所知,规范数据模型是指代表所有可能的消息格式和/或协议的通用数据模型。例如,在Mule MuelMessage中是一个规范数据模型,因为我们发送的每条消息,Mule都会创建代表您的消息的MuleMessage,而不管我们使用的协议如何。因此,创建这样的规范数据模型通常有点困难

说到你的情况,我不知道你的SOAP对象有多复杂。如果它们太复杂,即具有多层次,那么这将是一项艰巨的工作。我的建议是,为什么不能编写自己的自定义转换器(看看是否可以使用内置的转换器)来解析和转换SOAP消息到相应的JSON响应,而不是使用规范数据模型。您可以拥有一个通用的转换器接口,但多个实现会执行解析和转换,具体取决于您的SOAP消息。

希望这会有所帮助。