2010-03-16 3 views
166

Изучая некоторые веб-службы, я столкнулся с этой «новой» технологией, которую Microsoft называет OData. Читая их описание в FAQ по OData, мне сложно различать OData из веб-сервисов REST-ful. Может ли кто-нибудь помочь мне разобраться в различиях?Разница между веб-службами OData и REST

+2

Один из них - производитель, другой - для потребителей. – Kangkan

ответ

92

ОБНОВЛЕНИЕ Предупреждение. Этот ответ очень устарел, когда доступен OData V4.


Я написал об этом по электронной почте некоторое время назад here.

Как сказал Франци, OData базируется на Atom Pub. Тем не менее, они наделили некоторые функции сверху и, к сожалению, проигнорировали некоторые ограничения REST в этом процессе.

Возможность запроса службы OData требует создания URI на основе информации, недоступной или связанной с ответом. Это то, что люди REST называют внеполосной информацией и вводят скрытую связь между клиентом и сервером.

Другим сочетанием, которое вводится, является использование метаданных EDMX для определения свойств, содержащихся в содержимом записи. Эти метаданные могут быть обнаружены в фиксированной конечной точке, называемой $ метаданными. Опять же, клиент должен знать это заранее, он не может быть обнаружен.

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

+0

ваша ссылка сломана :(www.bizcoder.com/index.php/2009/11/30/oh-data/ – felickz

+1

@felickz Извините. имел проблемы с DNS. Он должен работать сейчас. Или будет, когда истечет срок действия вашего dns-кеша. –

+0

этот ответ может быть устаревшим сейчас .. поскольку клиент не только Microsoft и упоминает edmx, только если вы используете среду .net – sksallaj

60

Протокол OData построен поверх протокола AtomPub. Протокол AtomPub является одним из лучших примеров дизайна REST API. Итак, в некотором смысле вы правы - OData - это еще один REST API, и каждая реализация OData является веб-службой REST-ful.

Разница в том, что OData является конкретным протоколом; REST - это стиль архитектуры и дизайн.

+0

Возможно, я ошибаюсь (только начал изучать одату), но с версии 3 из [протокола] [http://www.odata.org/documentation] появляется также указанный формат JSON, который вы можете используйте альтернативно. Можете ли вы пролить свет на это? –

+1

@JohannesRudolph, честно говоря, я понятия не имею. Я не смотрел OData за последние два года. Но вполне вероятно, что Microsoft добавила поддержку JSON. Обратите внимание, что это никоим образом не меняет никаких ответов. JSON vs XML - это всего лишь вопрос представления ресурсов REST. –

+1

Вы можете указать в запросе, в каком формате вы хотели бы иметь. XML и JSON должны поддерживаться большинством реализаций, например. установив заголовок Accept в application/json (начиная с версии OData 2) – i000174

29

REST - это общая методика проектирования, используемая для описания способа доступа к веб-сервису. Используя REST, вы можете сделать http-запросы для получения данных. Если вы попробуете его в своем браузере, это будет похоже на посещение веб-сайта, но вместо возврата на веб-страницу вы получите XML. Некоторые службы также возвращают данные в формате JSON, который проще использовать с Javascript.

OData - это особая технология, предоставляющая данные через REST.

Если вы хотите, чтобы резюмировать это действительно быстро, думать о нем, как:

  • REST - дизайн модели
  • OData - высокоэффективная технология
8

от OData documentation:

Протокол OData - это протокол уровня приложения для взаимодействия с данными через веб-службы RESTful.

...

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

13

В 2012 OData прошли стандартизацию, так что я просто добавить обновление здесь ..

Сначала определения:

REST - это архитектура, как отправлять сообщения через HTTP.

OData V4 - это конкретная реализация REST, действительно определяет содержание сообщений в разных форматах (в настоящее время я думаю, это AtomPub и JSON). ODataV4 следует принципам покоя.

Например, люди asp.net будут в основном использовать контроллер WebApi для сериализации/десериализации объектов в JSON и javascript что-то делать с ним. Точка Odata может запрашивать непосредственно из URL с опциями из коробки.

3

OData (Open Data Protocol) - стандарт OASIS, который определяет наилучшую практику использования и использования RESTful API. OData помогает вам сосредоточиться на своей бизнес-логике при построении API RESTful без , чтобы беспокоиться о подходах к определению запроса и ответа заголовки, коды состояния, методы HTTP, соглашения о ссылках, типы файлов, форматы полезной информации и параметры запроса и т. Д. OData также проведет вас об отслеживании изменений, определении функций/действий для процедур повторного использования и отправке асинхронных/пакетных запросов и т. д. Кроме того, OData предоставляет возможность расширения для любых пользовательских потребностей ваших API-интерфейсов RESTful.

API OData RESTful легко потреблять. Метаданные OData, машиносчитываемое описание модели данных API-интерфейсов позволяют создавать мощные общие клиентские прокси и инструменты. Некоторые из могут помочь вам взаимодействовать с OData, даже не зная ничего о протоколе. На следующих 6 этапах показано 6 интересных сценариев использования OData на разных платформах программирования: . Но если вы не разработчик и хотели бы просто играть с OData, XOData - лучший старт для вас.

для более подробной информации на http://www.odata.org/

0

OData это особый вид REST, где мы можем данные запроса равномерно из URL.