Canonical schema (Canonical schema)

Перейти к навигации Перейти к поиску

В программной инженерии, Canonical Schemaшаблон проектирования, применяемый в SOA для уменьшения преобразований модели данных за счёт использования общей унифицированной схемы[1].

Обоснование

[править | править код]

Взаимодействие между сервисами часто требует обмена бизнес-документами. Чтобы сервис-потребитель мог отправить данные (относящиеся к определённой бизнес-сущности, например, заказу), ему необходимо знать правильную модель данных. Для этого сервис-провайдер декларирует формат данных, которые он ожидает получить от потребителя (например, в случае веб-сервиса это может быть XML-схема[2]). Зная схему данных, потребитель может правильно представить данные.

Тем не менее, в некоторых случаях потребитель может уже располагать необходимыми данными, но в другому формате, нежели требует провайдер, из-за чего данные перед отправкой приходится приводить к формату провайдера. При этом вполне возможно, что после получения обработанного документа от провайдера потребитель будет конвертировать его обратно в ту модель, которую он имел изначально.

Двойная конвертация повышает издержки и усложняет проектирование композиции сервисов[3]. Чтобы уменьшить необходимость в трансформациях, паттерн canonical schema предлагает использовать общую унифицированную модель данных для документов, которыми приходится часто обмениваться [4][5].

Применение

[править | править код]
  1. Mauro. et al. Service Oriented Device Integration - An Analysis of SOA Design Patterns. Архивная копия от 9 октября 2012 на Wayback Machine [Online], pp.1-10, 2010 43rd Hawaii International Conference on System Sciences, 2010. Date accessed: 30 April 2010.
  2. Service can be implemented using any technology as long as it conforms to the service-orientation guidelines.
  3. Service Compositions. Дата обращения: 9 января 2019. Архивировано из оригинала 11 марта 2010 года.
  4. service inventory. Дата обращения: 9 января 2019. Архивировано из оригинала 13 марта 2010 года.
  5. Thomas Erl, Herbjörn Wilhelmsen.Canonical Schema Design Pattern Архивная копия от 9 января 2019 на Wayback Machine[Online]. Date accessed: April 8, 2010.