Jump to content

Открытый протокол данных

В вычислениях , Open Data Protocol ( OData ) — это открытый протокол создавать и использовать запрашиваемые и совместимые веб-сервисов API-интерфейсы который позволяет стандартным способом . Microsoft запустила OData в 2007 году. [1] Версии 1.0, 2.0 и 3.0 выпускаются в соответствии с обещанием открытой спецификации Microsoft . Версия 4.0 была стандартизирована в OASIS . [2] с выпуском в марте 2014 года. [3] В апреле 2015 года OASIS представил OData v4 и OData JSON Format v4 в ISO/IEC JTC 1 для утверждения в качестве международного стандарта . [4] В декабре 2016 года ISO/IEC опубликовал OData 4.0 Core как ISO/IEC 20802-1:2016. [5] [6] и формат OData JSON как ISO/IEC 20802-2:2016. [7]

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

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

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

Технический комитет OData OASIS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запрос [ править ]

URL-адреса, запрошенные у конечной точки OData, могут включать параметры запроса. Протокол OData определяет различные «параметры системного запроса», которые должны принимать конечные точки. Их можно использовать для фильтрации, упорядочивания, сопоставления или разбиения на страницы данных.

Параметры запроса можно добавить к URL-адресу после ? символ и разделены & персонажи; каждый вариант состоит из $-sign имя префикса и его значение, разделенные знаком = знак, например: OData/Products?$top=2&$orderby=Name. Определен ряд логических операторов и функций для использования при фильтрации данных, например: OData/Products?$filter=Price lt 10.00 and startswith(Name,'M') запрашивает товары с ценой меньше 10 и названием, начинающимся на букву «М».

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

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,
      "Rating": 14,
      "Price": 2.5
    },
    {
      "ID": 1,
      "Name": "Milk",
      "Description": "Low fat milk",
      "ReleaseDate": "1995-10-01T00:00:00Z",
      "DiscontinuedDate": null,
      "Rating": 3,
      "Price": 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/$metadata#Products" 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">Products</title>
  <updated>2015-05-19T03:38:50Z</updated>
  <link rel="self" title="Products" href="Products"/>
  <entry>
    <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="Products(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="Categories" href="Products(0)/Categories"/>
    <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="Products(0)/Supplier"/>
    <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="Products(0)/ProductDetail"/>
    <title/>
    <updated>2015-05-19T03:38:50Z</updated>
    <author>
      <name/>
    </author>
    <content type="application/xml">
      <m:properties>
        <d:ID m:type="Int32">0</d:ID>
        <d:Name>Bread</d:Name>
        <d:Description>Whole grain bread</d:Description>
        <d:ReleaseDate m:type="DateTimeOffset">1992-01-01T00:00:00Z</d:ReleaseDate>
        <d:DiscontinuedDate m:null="true"/>
        <d:Rating m:type="Int16">4</d:Rating>
        <d:Price m:type="Double">2.5</d:Price>
      </m:properties>
    </content>
  </entry>
  <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="Categories" href="Products(1)/Categories"/>
    <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="Products(1)/Supplier"/>
    <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="Products(1)/ProductDetail"/>
    <title/>
    <updated>2015-05-19T03:38:50Z</updated>
    <author>
      <name/>
    </author>
    <content type="application/xml">
      <m:properties>
        <d:ID m:type="Int32">1</d:ID>
        <d:Name>Milk</d:Name>
        <d:Description>Low fat milk</d:Description>
        <d:ReleaseDate m:type="DateTimeOffset">1995-10-01T00:00:00Z</d:ReleaseDate>
        <d:DiscontinuedDate m:null="true"/>
        <d:Rating m:type="Int16">3</d:Rating>
        <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="Product">
        <Key>
          <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="Rating" Type="Edm.Int16" Nullable="false"/>
        <Property Name="Price" Type="Edm.Double" Nullable="false"/>
      </EntityType>

      <ComplexType Name="Address">
        <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[edit.NET

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

Ява [ править ]

JavaScript [ править ]

  • Клиент: Апач Олинго [14] (представлено OASIS [15] )
  • Клиент: data.js [16]
  • Клиент: JayData [17] для более высокого уровня абстракции (синтаксис типа LINQ, поддержка географических функций OData, IndexedDB, WebSQL, интеграция с DevExtreme, Kendo UI, Angular.js, Knockout.js и Sencha).
  • Клиент: библиотека OpenUI5, поддерживаемая SAP.
  • Клиент (Node.js): JayData для узла [18]
  • Клиент: Бриз [19]
  • Клиент: OData4 и Invantive Bridge Online [20]
  • Клиент: odata-fluent-запрос: [21] синтаксический анализатор языка запросов OData JavaScript
  • Сервер: узел-odata [22]

PHP [ править ]

  • Клиент: odataphp [23]
  • Сервер: POData [24]

Питон [ править ]

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

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

  • Клиент: библиотека Ruby_odata. [27]
  • Клиент: Бесплатная библиотека OData V4.0 для Ruby [28]
  • Сервер: Шафран [29]

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

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

  • AJAX: библиотека Ajax ASP.NET [31] для доступа к OData.
  • С++: odacpp_client [32] представляет собой реализацию протокола OData только на стороне клиента.
  • Наветренные студии [33] поддерживает OData в своих решениях для создания отчетов и документов.
  • Инструмент отчетности List & Label имеет специализированного поставщика данных для OData.
  • Blackberry (C++): OData-BB10 [34] Библиотека протокола открытых данных (OData) для приложений BlackBerry 10 (BB10) Cascades

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

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

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

  • Мастер базы данных нуклонов [50]

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

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

  1. ^ Фласко, Майк (18 июля 2007 г.). "Добро пожаловать!" . Блоги MSDN . Команда ОДата. Архивировано из оригинала 5 мая 2014 года.
  2. ^ «Технический комитет OASIS по протоколу открытых данных (OData)» . Проверено 5 августа 2013 г.
  3. ^ «OASIS утверждает стандарты OData 4.0 для открытой программируемой сети» . oasis-open.org . 17 марта 2014 г.
  4. ^ «OASIS представил формат OData v4 и OData JSON v4 в ISO/IEC JTC 1 для утверждения в качестве международного стандарта» . MS Открытые технологии . Архивировано из оригинала 20 мая 2015 г. Проверено 18 мая 2015 г.
  5. ^ «OData опубликован как стандарт ISO · OData — лучший способ REST» . www.odata.org . Проверено 11 мая 2021 г.
  6. ^ «ИСО/МЭК 20802-1:2016» . ИСО . Проверено 11 мая 2021 г.
  7. ^ «ИСО/МЭК 20802-2:2016» . ИСО . Проверено 11 мая 2021 г.
  8. ^ «Протокол открытых данных OASIS (OData) TC | OASIS» . www.oasis-open.org . Проверено 24 сентября 2019 г.
  9. ^ Библиотеки Microsoft OData .NET.
  10. ^ Simple.OData.Client
  11. ^ Апач Олинго
  12. ^ Jello-Framework
  13. ^ odata-клиент
  14. ^ Апач Олинго
  15. ^ «Библиотеки · OData — лучший способ ОТДЫХА» . www.odata.org . Проверено 19 февраля 2019 г.
  16. ^ "данные.js" . Архив CodePlex .
  17. ^ ДжейДата
  18. ^ JayData для узла
  19. ^ Бриз
  20. ^ OData4 и Invantive Bridge Online
  21. ^ odata-fluent-запрос
  22. ^ узел-одата
  23. ^ odataphp
  24. ^ ДАННЫЕ
  25. ^ PyOData
  26. ^ Лудильщик
  27. ^ библиотека Ruby_odata
  28. ^ Бесплатная библиотека OData V4.0 для Ruby
  29. ^ Шафран
  30. ^ «Библиотеки» . odata.org .
  31. ^ Библиотека Ajax ASP.NET
  32. ^ odacpp_client
  33. ^ Наветренные студии
  34. ^ OData-BB10
  35. ^ «Экосистема» . odata.org .
  36. ^ Конвейер гибридных данных Progress DataDirect
  37. ^ «Шлюз SAP NetWeaver» . Проверено 22 ноября 2012 г.
  38. ^ Служба данных REST IBM DeveloperWorks eXtreme Scale (OData)
  39. ^ «Добро пожаловать в API Office 365» . docs.microsoft.com . 28 августа 2018 года . Проверено 24 сентября 2019 г.
  40. ^ «Настройка Salesforce Connect для доступа к внешним данным с помощью адаптера OData 2.0 или 4.0» .
  41. ^ Скайвиа Коннект
  42. ^ «OData — Таблица» . help.tableau.com . Проверено 24 сентября 2019 г.
  43. ^ «OData и Spotfire» . Блог TIBCO . Проверено 30 марта 2016 г.
  44. ^ Мулсофт
  45. ^ «Обмен Anypoint» . www.mulesoft.com . Проверено 24 сентября 2019 г.
  46. ^ Факторы успеха
  47. ^ Dayforce Ceridian HCM
  48. ^ «Программное обеспечение для отчетности по персоналу — Dayforce | Ceridian» . www.ceridian.com . Проверено 24 сентября 2019 г.
  49. ^ «Что нужно знать об API Redfish» . Точный . 01.12.2017 . Проверено 31 августа 2019 г.
  50. ^ «Мастер базы данных нуклонов» . Проверено 16 ноября 2017 г.

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

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

комитета Спецификации

комитета Записки

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 826c78ff48477357c012b30e580729d6__1717727760
URL1:https://arc.ask3.ru/arc/aa/82/d6/826c78ff48477357c012b30e580729d6.html
Заголовок, (Title) документа по адресу, URL1:
Open Data Protocol - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)