OData和REST Web服务之间的区别

在研究一些networking服务的同时,我遇到了微软称之为OData的 “新”技术。 阅读OData的常见问题描述,我很难区分OData和REST-ful web服务。 有人能帮我理解差异吗?

前一段时间我在这个主题上写了一篇文章。

正如Franci所说,OData基于Atom Pub。 但是,他们已经在顶层分层了一些function,不幸的是忽略了这个过程中的一些REST约束。

OData服务的查询能力要求您基于不可用或链接到响应中的信息构buildURI。 REST人们称之为带外信息,并引入了客户端与服务器之间隐藏的耦合。

引入的其他耦合是通过使用EDMX元数据来定义条目内容中包含的属性。 这个元数据可以在一个名为$ metadata的固定端点上被发现。 再次,客户需要提前知道这一点,这是不能被发现的。

不幸的是,微软并不认为适合创build媒体types来描述这些关键的数据,所以任何OData客户端都必须对它正在与之交谈的服务以及正在接收的数据做出一系列的假设。


更新警告,这个答案是非常过时的OData V4可用。

OData协议build立在AtomPub协议之上。 AtomPub协议是REST APIdevise的最佳例子之一。 所以,从某种意义上说,您是对的 – OData只是另一个REST API,每个OData实现都是一个REST-ful Web服务。

不同的是OData是一个特定的协议; REST是架构风格和devise模式。

REST是一种通用的devise技术,用于描述如何访问Web服务。 使用REST可以使http请求获取数据。 如果你在浏览器中试用它,就像去一个网站,除了返回一个网页,你会得到XML。 一些服务也将返回JSON格式的数据,这是更容易与JavaScript使用。

OData是一种通过REST公开数据的特定技术。

如果你想快速总结,可以这样想:

  • REST – devise模式
  • OData – 启用技术

在2012年OData进行了标准化,所以我只是在这里添加更新..

首先是定义:

REST – 是如何通过HTTP发送消息的体系结构。

OData V4 – 是REST的一个具体实现,真正定义了不同格式的消息内容(目前我认为是AtomPub和JSON)。 ODataV4遵循rest原则。

例如,asp.net人将主要使用WebApi控制器序列化/反序列化成JSON的对象,并让JavaScript做些什么。 Odata的要点是能够直接从URL中用现成的选项查询。

从OData 文档 :

OData协议是通过RESTful Web服务与数据进行交互的应用程序级协议。

OData协议与其他基于REST的Web服务方法不同,因为它提供了统一的方式来描述数据和数据模型。

OData(开放数据协议)是OASIS标准,定义了构build和使用RESTful API的最佳实践。 OData可帮助您专注于业务逻辑,同时构buildRESTful API,而不必担心定义请求和响应头,状态码,HTTP方法,URL惯例,媒体types,有效载荷格式和查询选项等方法。跟踪更改,为可重复使用的过程定义function/操作以及发送asynchronous/批量请求等。此外,OData还提供扩展function以满足RESTful API的任何自定义需求。

OData RESTful API很容易使用。 OData元数据是API的数据模型的机器可读描述,能够创buildfunction强大的通用客户端代理和工具。 其中一些可以帮助您与OData进行交互,甚至不需要了解协议。 以下6个步骤演示了6个有趣的不同编程平台的OData消耗情况。 但是,如果您是非开发人员,只想简单地使用OData,XOData是您的最佳开始。

有关更多详情, 请访问http://www.odata.org/

ODATA是一种特殊的REST ,可以从URL 统一查询数据