Протокол OData v 4.01 (экстракт)

Материал из support.qbpro.ru

источник

Обзор

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

Предоставляет:

  • Метаданные: машиночитаемое описание модели данных, предоставляемой конкретным сервисом.
  • Данные: наборы объектов данных и связи между ними.
  • Запрос: обращение к сервису с набором фильтров или других преобразований для данных, с последующим возвращением результата.
  • Редактирование: создание, обновление и удаление данных.
  • Операции: вызов пользовательской логики
  • Словари: добавление пользовательской семантики.

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

С этой целью протокол OData следует следующим принципам разработки:

  • Предпочтительны механизмы, которые работают с различными источниками данных. В частности, не предполагается реляционная модель данных.
  • Расширяемость. Сервисы должны поддерживать расширение функциональности без изменения клиентов, не подозревающих об этих расширениях.
  • Следование принципам REST.
  • OData следует строить постепенно. Очень простой, совместимый сервис должен быть простым в построении, а дополнительная работа необходима только для поддержки дополнительных возможностей.
  • Будь проще. Решайте общие задача и предусматривайте расширяемость, где это необходимо.

Data Model

Этот раздел предоставляет высокоуровневое описание Entity Data Model (EDM - абстрактную модель данных, используемую для описания данных, предоставляемых сервисами OData. Метаданные OData являются представлением модели данных сервиса(ов), предоставляемых клиенту.

Центральными понятиями в EDM являются сущности (entities), отношения (relationships), наборы сущностей (entity sets), действия(actions) и функции(functions).

Сущность (проще объект) - это экземпляры типов объектов (например, Клиент, Сотрудник и т.д.).

Типы сущностей называются структурированными типами с ключом. Они определяют именованные свойства и отношения этой сущности. Типы сущностей могут быть получены одним наследованием от других типов сущностей. Ключ типа сущности формируется из подмножества примитивных свойств (например, CustomerId, OrderId, LineId и т. Д.) типа объекта. (По человечески: сущность - это набор полей или структура. Некоторые поля могут быть помечены как ключевые, ключ формируется комбинацией ключевых полей. Прим. ключевые поля всегда должны присутствовать в запросах).

Комплексные типы - это структурированные типы без ключей, состоящие из набора свойств. На их экземпляры нельзя ссылаться вне их содержащей сущности. Комплексные типы обычно используется в качестве значений свойств в сущности или в качестве параметров операций. Свойства, объявленные как часть определения структурированного типа, являются объявленными (прим. статическими) свойствами. Экземпляры структурированных типов могут содержать дополнительные необъявленные динамические свойства. Динамическое свойство не может иметь то же имя, что и объявленное свойство. Сущности или комплексные типы, которые позволяют клиентам сохранять дополнительные необъявленные свойства называются открытыми типами.