Русская Википедия:Canonical schema

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Compu-prog-stub

В программной инженерии, 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. Шаблон:Wayback [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. Шаблон:Cite web
  4. Шаблон:Cite web
  5. Thomas Erl, Herbjörn Wilhelmsen.Canonical Schema Design Pattern Шаблон:Wayback[Online]. Date accessed: April 8, 2010.