2015-02-18 5 views
0

Я создаю приложение, которое предоставляет API-интерфейс Rest, и на бэкенде связывает и организует несколько SOAP-сервисов для создания ответов на REST API. Я читал о Canonical Data Models и о том, как они могут помочь мне свободно связывать эти серверные SOAP-сервисы.Каноническая модель данных

Должен ли я использовать каноническую модель данных между моим API-интерфейсом Rest и бэкэнд-услугами?

В настоящий момент ответы SOAP для backend не привязаны к объектам Java с использованием JAXB. Затем я использую скрипты для сопоставления объектов jaxb с картой, представляющей структуру, которую я хочу вернуть как JSON, и просто преобразую Map в Json через мой Rest API.

Так SOAP -> JAXB Java Object -> Java Map (представляющий JSON) -> Json

Должен ли я добавить еще один шаг в здесь для канонической модели?

Так SOAP -> JAXB Java Object -> каноническую модель не представляющая SOAP или структуру JSON -> Java Map (представляющий JSON) -> Json

Это хорошо подходит для МЧР? Или добавляет лишний лишний уровень?

ответ

0

Я думаю, вы говорите о наличии фасада между вами и услугами, а не с CDM. Вы сопоставили бы созданные jaxb объекты во внутренних объектах, выполняли бы на них прикладную логику и затем сопоставляли их с объектами, представляющими ваш интерфейс JSON. Внутреннее отображение jaxb отделяет ваше приложение от используемых вами интерфейсов. Внутреннее сопоставление будет отделять интерфейс, который вы предоставляете своим потребителям от ваших внутренних объектов.

Независимо от того, стоит ли это или нет, зависит от сложности вашей среды, какая стоимость & вероятность изменения есть. Например, может быть приемлемым быть тесно связанным с службами, которые разделяют и выставляют зрелую и версированную каноническую модель. Это очень другой профиль риска, если вы потребляете набор интерфейсов ad-hoc или сторонних производителей.

0

Насколько я знаю, каноническая модель данных означает общую модель данных, которая представляет все возможные форматы сообщений и/или протоколы. Например, в Mule MuelMessage является канонической моделью данных, поскольку каждое отправленное сообщение Mule создает MuleMessage, который представляет ваше сообщение независимо от используемого протокола. Так что создание такой модели канонических данных немного сложно, в общем случае

Подойдя к вашему делу, я не знаю, насколько сложны ваши объекты SOAP. Если они слишком сложны, т. Е. Имеют многоуровневые уровни, то это будет трудная работа. Мое предложение заключается в том, что вместо того, чтобы иметь каноническую модель данных, почему вы не можете написать собственный собственный трансформатор (см., Если вы можете использовать встроенный трансформатор), который анализирует и преобразует ваше сообщение SOAP в соответствующий ответ JSON. Вы можете иметь общий интерфейс трансформатора, но с несколькими реализациями выполнять синтаксический анализ и преобразование, зависит от вашего сообщения SOAP.

Надеюсь, это помогло.