Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислениях , Open Data Protocol ( OData ) является открытым протоколом , который позволяет создавать и потребление Queryable и совместимый REST API , простой и стандартный способ. Microsoft инициировала OData в 2007 году. [1] Версии 1.0, 2.0 и 3.0 выпущены в рамках Microsoft Open Specification Promise . Версия 4.0 была стандартизирована в OASIS , [2] с выпуском в марте 2014 года [3] В апреле 2015 OASIS представил OData v4 и OData JSON Формат v4 в ISO / IEC JTC 1 для утверждения в качестве международного стандарта. [4]

Протокол позволяет создавать и использовать REST API, которые позволяют веб-клиентам публиковать и редактировать ресурсы, идентифицированные с помощью URL-адресов и определенные в модели данных , с использованием простых HTTP-сообщений. OData имеет некоторые общие черты с JDBC и ODBC ; как и ODBC, OData не ограничивается реляционными базами данных .

Стандартизация [ править ]

После первоначальной разработки Microsoft OData стала стандартизированным протоколом Технического комитета OData OASIS.

Технический комитет OASIS OData [ править ]

«OASIS OData TC упрощает запросы и обмен данными между разрозненными приложениями и несколькими заинтересованными сторонами для повторного использования на предприятии, в облаке и на мобильных устройствах. Протокол на основе REST, OData строится на HTTP , AtomPub и JSON с использованием URIдля адресации и доступа к ресурсам фида данных. Он обеспечивает доступ к информации из различных источников, включая (но не ограничиваясь) реляционные базы данных, файловые системы, системы управления контентом и традиционные веб-сайты. OData предоставляет способ разрушить разрозненные хранилища данных и повысить общую ценность данных за счет создания экосистемы, в которой потребители данных могут взаимодействовать с производителями данных гораздо более мощным способом, чем это возможно в настоящее время, что позволяет большему количеству приложений осмыслить более широкий кругозор. набор данных. Каждый производитель и потребитель данных, который участвует в этой экосистеме, увеличивает ее общую ценность » [5].

В число участников TC входят CA Technologies , Citrix Systems , IBM , Microsoft , Progress Software , Red Hat , SAP SE и SDL .

Архитектура [ править ]

OData - это протокол для создания и использования RESTful API. Таким образом, как обычная практика REST, OData основывается на HTTP, AtomPub и JSON, используя URI для адресации и доступа к ресурсам канала данных.

Идентификация ресурса [ править ]

OData использует URI для идентификации ресурсов. Для каждой службы OData, корень службы которой сокращен как http: // host / service / , можно найти следующие фиксированные ресурсы:

Сервисный документ [ править ]

В служебном документе перечислены наборы сущностей, функции и отдельные объекты, которые могут быть извлечены. Клиенты могут использовать служебный документ для навигации по модели в режиме гипермедиа.

Сервисный документ доступен по адресу http: // host / service / .

Документ метаданных [ править ]

Документ метаданных описывает типы, наборы, функции и действия, понятные службе OData. Клиенты могут использовать документ метаданных, чтобы понять, как запрашивать объекты в службе и взаимодействовать с ними.

Документ метаданных доступен по адресу http: // host / service / $ metadata .

Динамические ресурсы [ править ]

URI для динамических ресурсов могут быть вычислены из информации гипермедиа в служебном документе и документе метаданных.

Операция с ресурсами [ править ]

OData использует команды HTTP для обозначения операций с ресурсами.

  • GET: получить ресурс (набор сущностей, отдельную сущность, структурное свойство, свойство навигации, поток и т. Д.).
  • POST: создайте новый ресурс.
  • PUT: обновить существующий ресурс, заменив его полным экземпляром.
  • ПАТЧ: обновите существующий ресурс, заменив часть его свойств частичным экземпляром.
  • УДАЛИТЬ: удалить ресурс.

Представление ресурса [ править ]

OData использует разные форматы для представления данных и модели данных. В протоколе OData версии 4.0 формат JSON является стандартом для представления данных, а формат Atom все еще находится на стадии спецификации комитета. Для представления модели данных используется язык определения общей схемы (CSDL), который определяет XML-представление модели данных сущности, предоставляемой службами OData.

Пример полезной нагрузки данных OData JSON [ править ]

Коллекция товаров:

{  "@ odata.context" :  "http://services.odata.org/V4/OData/OData.svc/$metadata#Products" ,  "value" :  [  {  "ID" :  0 ,  "Name" :  " Meat " ,  " Description " :  " Red Meat " ,  " ReleaseDate " :  " 1992-01-01T00: 00: 00Z " ,  " DiscontinuedDate " :  null ,  " Рейтинг " :  14 ,  " Цена " :  2.5  },  {  " ID " : 1 ,  «Имя» :  «Молоко» , "Описание" :  "Обезжиренное молоко" ,  " Дата выпуска " :  "1995-10-01T00: 00: 00Z" ,  "Дата прекращения" :  null ,  "Рейтинг" :  3 ,  "Цена" :  3.5  },  ...  ] }

Пример полезной нагрузки данных OData Atom [ править ]

Коллекция товаров:

<feed  xml: base = "http://services.odata.org/V4/OData/OData.svc/"  m: context = "http://services.odata.org/V4/OData/OData.svc/$ метаданные # Продукты "  xmlns = " http://www.w3.org/2005/Atom "  xmlns: d = " http://docs.oasis-open.org/odata/ns/data "  xmlns: m = " http : //docs.oasis-open.org/odata/ns/metadata "  xmlns: georss = " http://www.georss.org/georss "  xmlns: gml = " http://www.opengis.net/gml " > <id> http://services.odata.org/v4/odata/odata.svc/Products </id> <title  type = "text" > Продукты </title> <updated> 2015-05-19T03: 38: 50Z </updated> <link  rel = "self"  title = "Products"  href = "Products" /> <запись> <id> http://services.odata.org/V4/OData/OData.svc/Products(0) </id> <category  term = "# ODataDemo.Product"  scheme = "http://docs.oasis-open.org/odata/ns/scheme" /> <link  rel = "edit"  title = "Product"  href = "Товары (0)" /> <link  rel = "http://docs.oasis-open.org/odata/ns/relatedlinks/Categories"  type = "application / xml"  title = "Categories"  href = "Products (0) / Categories / $ ref" /> <link  rel = "http://docs.oasis-open.org/odata/ns/related/Categories"  type = "application / atom + xml; type = feed"  title = "Категории"  href = "Продукты (0) / Категории " /> <link  rel = "http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier"  type = "application / xml"  title = "Supplier"  href = "Products (0) / Supplier / $ ref" /> <link  rel = "http://docs.oasis-open.org/odata/ns/related/Supplier"  type = "application / atom + xml; type = entry"  title = "Supplier"  href = "Товары (0) / Поставщик " /> <link  rel = "http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail"  type = "application / xml"  title = "ProductDetail"  href = "Products (0) / ProductDetail / $ ref" /> <link  rel = "http://docs.oasis-open.org/odata/ns/related/ProductDetail"  type = "application / atom + xml; type = entry"  title = "ProductDetail"  href = "Продукты (0) / ProductDetail " /> <название /> <updated> 2015-05-19T03: 38: 50Z </updated> <author> <имя /> </author> <content  type = "application / xml" > <м: свойства> <d: ID  m: type = "Int32" > 0 </ d: ID> <d: Name> Хлеб </ d: Name> <d: Description> Цельнозерновой хлеб </ d: Description> <d: ReleaseDate  m: type = "DateTimeOffset" > 1992-01-01T00: 00: 00Z </ d: ReleaseDate> <d: DiscontinuedDate  m: null = "true" /> <d: Рейтинг  m: type = "Int16" > 4 </ d: Рейтинг> <d: Price  m: type = "Double" > 2,5 </ d: Price> </ m: properties> </content> </entry> <запись> <id> http://services.odata.org/V4/OData/OData.svc/Products(1) </id> <category  term = "# ODataDemo.Product"  scheme = "http://docs.oasis-open.org/odata/ns/scheme" /> <link  rel = "edit"  title = "Product"  href = "Products (1)" /> <link  rel = "http://docs.oasis-open.org/odata/ns/relatedlinks/Categories"  type = "application / xml"  title = "Categories"  href = "Products (1) / Categories / $ ref" /> <link  rel = "http://docs.oasis-open.org/odata/ns/related/Categories"  type = "application / atom + xml; type = feed"  title = "Категории"  href = "Продукты (1) / Категории " /> <link  rel = "http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier"  type = "application / xml"  title = "Supplier"  href = "Products (1) / Supplier / $ ref" /> <link  rel = "http://docs.oasis-open.org/odata/ns/related/Supplier"  type = "application / atom + xml; type = entry"  title = "Supplier"  href = "Продукты (1) / Поставщик " /> <link  rel = "http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail"  type = "application / xml"  title = "ProductDetail"  href = "Products (1) / ProductDetail / $ ref" /> <link  rel = "http://docs.oasis-open.org/odata/ns/related/ProductDetail"  type = "application / atom + xml; type = entry"  title = "ProductDetail"  href = "Продукты (1) / ProductDetail " /> <название /> <updated> 2015-05-19T03: 38: 50Z </updated> <author> <имя /> </author> <content  type = "application / xml" > <м: свойства> <d: ID  m: type = "Int32" > 1 </ d: ID> <d: Name> Молоко </ d: Name> <d: Description> Нежирное молоко </ d: Description> <d: ReleaseDate  m: type = "DateTimeOffset" > 1995-10-01T00: 00: 00Z </ d: ReleaseDate> <d: DiscontinuedDate  m: null = "true" /> <d: Рейтинг  m: type = "Int16" > 3 </ d: Рейтинг> <d: Price  m: type = "Double" > 3,5 </ d: Price> </ m: properties> </content> </entry> ...</feed>

Образец документа метаданных OData [ править ]

<edmx: Edmx  Version = "4.0"  xmlns: edmx = "http://docs.oasis-open.org/odata/ns/edmx" > <edmx: DataServices> <Schema  Namespace = "ODataDemo"  xmlns = "http://docs.oasis-open.org/odata/ns/edm" > <EntityType  Name = "Продукт" > <Ключ> <PropertyRef  Name = "ID" /> </Key> <Property  Name = "ID"  Type = "Edm.Int32"  Nullable = "false" /> <Property  Name = "Name"  Type = "Edm.String" /> <Property  Name = "Description"  Type = "Edm.String" /> <Property  Name = "ReleaseDate"  Type = "Edm.DateTimeOffset"  Nullable = "false" /> <Property  Name = "DiscontinuedDate"  Type = "Edm.DateTimeOffset" /> <Property  Name = "Рейтинг"  Type = "Edm.Int16"  Nullable = "false" /> <Property  Name = "Price"  Type = "Edm.Double"  Nullable = "false" /> </EntityType> <ComplexType  Name = "Адрес" > <Property  Name = "Street"  Type = "Edm.String" /> <Property  Name = "City"  Type = "Edm.String" /> <Property  Name = "State"  Type = "Edm.String" /> <Property  Name = "ZipCode"  Type = "Edm.String" /> <Property  Name = "Country"  Type = "Edm.String" /> </ComplexType>  <EntityContainer  Name = "DemoService" > <EntitySet  Name = "Products"  EntityType = "ODataDemo.Product" > </EntitySet> </EntityContainer> </Schema> </ edmx: DataServices></ edmx: Edmx>

Экосистема [ править ]

Экосистема OData состоит из клиент-серверных библиотек, реализующих протокол, и приложений, основанных на этом протоколе.

Библиотеки [ править ]

Существует ряд библиотек OData, доступных для доступа / создания API OData:

.NET [ править ]

  • Сервер и клиент: библиотеки Microsoft OData .NET [6]
  • Клиент: Simple.OData.Client [7]

Java [ править ]

  • Сервер и клиент: Apache Olingo [8]
  • На стороне сервера: Jello-Framework [9]
  • Клиент: odata-client [10]

JavaScript [ править ]

  • Клиент: Apache Olingo [11] (представлен OASIS [12] )
  • Клиент: data.js [13]
  • Клиент: JayData [14] для более высокого уровня абстракции (синтаксис, подобный LINQ, поддержка функций OData geo, IndexedDB, WebSQL, интеграция с DevExtreme, Kendo UI, Angular.js, Knockout.js и Sencha).
  • Клиент: библиотека OpenUI5, поддерживаемая SAP
  • Клиент (Node.js): JayData для узла [15]
  • Клиент: Бриз [16]
  • Клиент: OData4 и Invantive Bridge Online [17]
  • Сервер: node-odata [18]

PHP [ править ]

  • Клиент: odataphp [19]
  • Сервер: POData [20]

Python [ править ]

  • Клиент: PyOData [21]
  • Сервер и клиент: Pyslet [22]

Руби [ править ]

  • Клиент: библиотека ruby_odata [23]
  • Клиент: Бесплатная библиотека OData V4.0 для Ruby [24]
  • Сервер: Safrano [25]

Другое [ править ]

Другие реализованные языки включают: [26]

  • AJAX: библиотека ASP.NET Ajax [27] для доступа к OData.
  • C ++: odatacpp_client [28] - это клиентская реализация протокола OData.
  • Windward Studios [29] поддерживает OData в своих решениях для создания отчетов и создания документов.
  • Инструмент отчетности List & Label имеет специализированного поставщика данных для OData.
  • Blackberry (C ++): OData-BB10 [30] библиотека Open Data Protocol (OData) для каскадных приложений BlackBerry 10 (BB10)

Приложения [ править ]

Приложения включают: [31]

  • Progress DataDirect Hybrid Data Pipeline [32] может предоставлять любые облака, большие данные или реляционные источники данных в качестве конечных точек OData.
  • Socrata предоставляет API OData .
  • Microsoft Azure предоставляет API OData .
  • SAP NetWeaver Gateway [33] обеспечивает доступ OData к SAP Business Suite и SAP Business Warehouse.
  • Доступ к службе данных REST IBM WebSphere eXtreme Scale может получить любой HTTP-клиент, использующий oData. [34]
  • Microsoft SharePoint 2010 и более поздние версии могут предоставлять свои данные как конечную точку OData.
  • Office 365 предоставляет API-интерфейсы OData V4.0. [35]
  • Salesforce Lightning Connect использует API-интерфейсы OData. [36]
  • Skyvia Connect [37] предоставляет данные из облака и базы данных через OData
  • Tableau может подключаться к API OData. [38]
  • TIBCO Spotfire может подключаться к API OData. [39]
  • Mulesoft [40] помогает интегрироваться с API OData. [41]
  • SuccessFactors [42] использует API-интерфейсы Odata.
  • Dayforce Ceridian HCM [43] использует Odata [44]
  • Redfish использует Odata [45]

Инструменты [ править ]

  • Мастер базы данных Nucleon [46]

См. Также [ править ]

  • GData - конкурирующий протокол от Google
  • Resource Description Framework (RDF) - аналогичная концепция от W3C
  • GraphQL

Ссылки [ править ]

  1. ^ "Добро пожаловать!" . Блоги MSDN . Команда OData.
  2. ^ "Технический комитет OASIS Open Data Protocol (OData)" . Проверено 5 августа 2013 .
  3. ^ «OASIS утверждает стандарты OData 4.0 для открытого программируемого Интернета» . oasis-open.org .
  4. ^ «OASIS представил OData v4 и OData JSON Format v4 в ISO / IEC JTC 1 для утверждения в качестве международного стандарта» . MS Open Tech . Архивировано из оригинала на 2015-05-20 . Проверено 18 мая 2015 .
  5. ^ "Протокол открытых данных OASIS (OData) TC | OASIS" . www.oasis-open.org . Проверено 24 сентября 2019 года .
  6. ^ Библиотеки Microsoft OData .NET
  7. ^ Simple.OData.Client
  8. ^ Апач Олинго
  9. ^ Jello-Framework
  10. ^ odata-клиент
  11. ^ Апач Олинго
  12. ^ «Библиотеки · OData - лучший способ REST» . www.odata.org . Проверено 19 февраля 2019 .
  13. ^ "data.js" . Архив CodePlex .
  14. ^ JayData
  15. ^ JayData для узла
  16. ^ Бриз
  17. ^ OData4 и Invantive Bridge Online
  18. ^ узел-одата
  19. ^ одатафп
  20. ^ POData
  21. ^ PyOData
  22. ^ Пислет
  23. ^ библиотека ruby_odata
  24. ^ Бесплатная библиотека OData V4.0 для Ruby
  25. ^ Сафрано
  26. ^ «Библиотеки» . odata.org .
  27. ^ Библиотека ASP.NET Ajax
  28. ^ odatacpp_client
  29. ^ Windward Studios
  30. ^ OData-BB10
  31. ^ «Экосистема» . odata.org .
  32. ^ Progress DataDirect Гибридный конвейер данных
  33. ^ «SAP NetWeaver Gateway» . Проверено 22 ноября 2012 .
  34. ^ Служба данных REST IBM developerWorks eXtreme Scale (OData)
  35. ^ «Добро пожаловать в API Office 365» . docs.microsoft.com . Проверено 24 сентября 2019 года .
  36. ^ «Salesforce Lightning Connect и OData» .
  37. ^ Skyvia Connect
  38. ^ "OData - Таблица" . help.tableau.com . Проверено 24 сентября 2019 года .
  39. ^ "OData и Spotfire" . Блог TIBCO . Проверено 30 марта 2016 .
  40. ^ Mulesoft
  41. ^ «Anypoint Exchange» . www.mulesoft.com . Проверено 24 сентября 2019 года .
  42. ^ SuccessFactors
  43. ^ Дневная сила Ceridian HCM
  44. ^ "Программное обеспечение для составления отчетов HR - Dayforce | Ceridian" . www.ceridian.com . Проверено 24 сентября 2019 года .
  45. ^ «Что нужно знать о API-интерфейсе Redfish» . Exxact . 2017-12-01 . Проверено 31 августа 2019 .
  46. ^ "Мастер базы данных Nucleon" . Проверено 16 ноября 2017 года .

Внешние ссылки [ править ]

  • OData.org (официальный сайт)
  • Протокол открытых данных на примере
  • Презентация по основам OData

Стандарты OData OASIS [ править ]

  • OData версии 4.0, часть 1: протокол
  • OData версии 4.0, часть 2: Соглашения об URL-адресах
  • OData версии 4.0, часть 3: язык определения общей схемы (CSDL)
  • Компоненты ABNF - правила построения OData ABNF версии 4.0 и тестовые примеры OData ABNF
  • Компоненты словаря - словарь OData Core и словарь OData Measures
  • XML-схемы - XML-схема OData EDMX и XML-схема OData EDM
  • Формат OData JSON версии 4.0

Спецификации комитета [ править ]

  • Формат OData Atom версии 4.0
  • Расширение OData для агрегирования данных версии 4.0

Заметки Комитета [ править ]

  • Что нового в OData версии 4.0