ODataとREST Webサービスの違い


196

いくつかのWebサービスを調べていると、MicrosoftがODataと呼んでいるこの「新しい」テクノロジーに出くわしました。ODataとは何かに関するFAQ内の説明を読んで、ODataとRESTフルWebサービスを区別するのに苦労しています。誰かが違いを理解するのを手伝ってくれませんか?


2
1つはプロデューサーで、もう1つはコンシューマーのイネーブラーです。
カンカン2014年

回答:


98

更新 警告:OData V4が利用可能になったため、この回答は非常に古くなっています。


私はしばらく前に被写体に記事を書いたここに

Franciが言ったように、ODataはAtom Pubに基づいています。ただし、一部の機能は最上位にあり、残念ながらプロセス内のREST制約の一部は無視されています。

ODataサービスのクエリ機能では、応答で利用できない、またはリンクされていない情報に基づいてURIを構築する必要があります。これは、RESTの人々がアウトオブバンド情報と呼んでいるものであり、クライアントとサーバー間の隠された結合を導入します。

導入されるもう1つのカップリングは、EDMXメタデータを使用して、エントリーコンテンツに含まれるプロパティを定義することです。このメタデータは、$ metadataと呼ばれる固定エンドポイントで検出できます。繰り返しになりますが、クライアントは事前にこれを知る必要があり、発見することはできません。

残念なことに、Microsoftはこれらの主要なデータを記述するメディアタイプを作成するのに適しているとは考えていなかったため、ODataクライアントは、通信しているサービスと受信するデータについて多くの仮定を行う必要があります。


1
@felickz申し訳ありません。DNSの問題がありました。これで動作するはずです。または、DNSキャッシュの有効期限が切れます。
Darrel Miller

6
実際、これ時代遅れです。ODataのV3は、これらの両方の問題(実際には1つだけ)に対処する「JSON Light」を追加しました。つまり、$ metadataはクエリを構築する方法を知っているため、リソース表現の$ metadataへのリンクしかありません。それが追加されたので、両方の問題が一度に消えます。
Alex James

10
@DarrelMiller回答が古くなっているとのことですが、トピックに関するあなたの意見を反映した更新を追加しますか?OData 4とRESTの違いを知りたいと思っています。どうもありがとう
クレン2015

2
@Kurren私のやることリストに載っていますが、残念ながら長いリストです。
Darrel Miller

2
@DarrelMillerは、OData V4で最新の状態にするために、投稿をすぐに更新する時間があることを願っています。
LCJ

64

ODataプロトコルは、AtomPubプロトコルの上に構築されています。AtomPubプロトコルは、REST API設計の最良の例の1つです。つまり、ある意味で正しい-ODataは単なる別のREST APIであり、各OData実装はRESTフルWebサービスです。

違いは、ODataは特定のプロトコルであることです。RESTはアーキテクチャスタイルおよびデザインパターンです。


私はこれについて間違っているかもしれません(odataについて学習を始めたばかりです)。ただし、[プロトコル] [ odata.org/documentation]のバージョン3の時点では、代わりに使用できるJSON形式も指定されているようです。これに光を当てることができますか?
ヨハネスルドルフ

1
@JohannesRudolph、正直なところ、私にはわかりません。私は過去2年間ODataを見ていません。しかし、MicrosoftがJSONサポートを追加した可能性は非常に高いです。ただし、これによってここでの応答が変更されることはありません。JSONとXMLは、RESTリソースのプレゼンテーションの問題です。
Franci Penov 2012

1
リクエストで希望する形式を指定できます。ほとんどの実装では、XMLとJSONの両方をサポートする必要があります。たとえば、Acceptヘッダーをapplication / jsonに設定します(ODataバージョン2以降)
i000174

31

RESTは、Webサービスへのアクセス方法を記述するために使用される一般的な設計手法です。RESTを使用して、データを取得するためにhttp要求を行うことができます。ブラウザで試してみると、Webページに戻る代わりにXMLが返される以外は、Webサイトにアクセスするのと同じです。一部のサービスは、JavaScriptでより使いやすいJSON形式でデータを返します。

ODataは、RESTを介してデータを公開する特定のテクノロジーです。

簡単にまとめたい場合は、次のように考えてください。

  • REST-デザインパターン
  • OData-有効化テクノロジー

20

2012年にODataは標準化されたので、ここで更新を追加します。

まず定義:

REST -HTTP経由でメッセージを送信する方法のアーキテクチャです。

OData V4 -RESTの特定の実装であり、実際にはメッセージのコンテンツをさまざまな形式で定義します(現在、私はAtomPubとJSONだと思います)。ODataV4は残りの原則に従います。

たとえば、asp.netの人々は、主にWebApiコントローラーを使用してオブジェクトをJSONにシリアル化/逆シリアル化し、JavaScriptでそれを実行します。Odataのポイントは、すぐに使用できるオプションを使用して、URLから直接クエリを実行できることです。


10

ODataのドキュメントから:

ODataプロトコルは、RESTful Webサービスを介してデータと対話するためのアプリケーションレベルのプロトコルです。

...

ODataプロトコルは、データとデータモデルの両方を説明する統一された方法を提供するという点で、他のRESTベースのWebサービスアプローチとは異なります。


4

OData(Open Data Protocol)は、RESTful APIを構築して使用するためのベストプラクティスを定義するOASIS標準です。ODataは、リクエストヘッダーと応答ヘッダー、ステータスコード、HTTPメソッド、URL規則、メディアタイプ、ペイロード形式、クエリオプションなどを定義するアプローチを気にすることなく、RESTful APIを構築しながらビジネスロジックに集中するのに役立ちます。ODataは、変更の追跡、再利用可能なプロシージャの関数/アクションの定義、非同期/バッチリクエストの送信など。さらに、ODataは、RESTful APIのカスタムニーズを満たす拡張機能を提供します。

OData RESTful APIは簡単に使用できます。APIのデータモデルの機械可読な記述であるODataメタデータは、強力な汎用クライアントプロキシとツールの作成を可能にします。それらのいくつかは、プロトコルについて何も知らなくてもODataと対話するのに役立ちます。次の6つのステップは、さまざまなプログラミングプラットフォームでのOData消費の6つの興味深いシナリオを示しています。しかし、あなたが開発者ではなく、単にODataを試してみたい場合は、XODataが最適です。

詳細については、http://www.odata.org/をご覧ください。



2

RESTは、の略REプレゼンテーションSテイトT ransferリソースベースの建築様式があります。リソースベースとは、データと機能がリソースと見なされることを意味します。

ODataは、RESTful Webサービスを構築および利用するための一連のベストプラクティスを定義するWebベースのプロトコルです。ODataはRESTful Webサービスを作成する方法であり、RESTの実装です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.