在研究一些网络服务时,我遇到了微软称之为的“新技术” 开放数据. 。阅读常见问题解答中关于 OData 是什么的描述后,我很难区分 OData 和 REST-ful Web 服务。有人可以帮助我理解这些差异吗?

有帮助吗?

解决方案

<强>更新警告,此答案是极其过时现在的OData V4是可用的。


我写了一篇关于这个问题前一段时间这里

正如所述弗郎,OData的是基于Atom发布。然而,他们在上面运行一些功能,不幸的是忽略了一些在这个过程中REST约束。

OData服务的查询能力需要你基于该不可用,或在响应链接到的信息来构建的URI。这是什么REST人叫出带外信息,并介绍了客户端和服务器之间的隐藏耦合。

这被引入的其它耦合是通过使用元数据EDMX来定义包含在所述入口内容的属性。可以在一个固定的端点发现这个所谓的元数据元数据$。同样,客户端需要预先知道这一点,它不能被发现。

不幸的是,微软并没有看到适合创建介质类型来描述数据的这些关键部分,所以任何的OData客户端做出了一堆关于它正在与服务,它是接收数据的假设。

其他提示

OData协议是建立在AtomPub的协议的顶部上。通过AtomPub协议是REST API设计的一个最好的例子。所以,从某种意义上说你是正确的 - 的OData是另一种REST API和OData的每一个执行是一个REST-FUL Web服务

不同的是,OData的是一个特定的协议; REST是建筑风格和设计图案。

其余是一个通用的设计技术用于描述网络服务可以访问。使用剩下的你可以做http请求,以获得数据。如果你尝试在您的浏览器就像是去一个网站,除了而不是返回的一个网页上,你会得到回XML。一些服务也将返回描述软件所需的依赖其更易于使用的Javascript。

为最终用户是特定的技术公开数据通过其余部分。

如果你想要总结一下真正的快,把它作为:

  • 其余的设计图案
  • 为最终用户赋能技术

在2012的OData进行标准化,所以我就在这里加一个更新..

首先定义:

<强> REST - 是如何通过HTTP发送消息的架构。

<强>的OData V4 - 是REST的一种具体实施方式,确实定义了不同格式的消息的内容(目前我认为是的AtomPub和JSON)。 ODataV4如下其余原理。

例如,asp.net人们将主要使用的WebAPI控制器序列化/反序列化对象转换成JSON和的JavaScript用它做什么。 ODATA的一点是能够从URL中直接查询 外的现成的选项。

来自 OData 文档:

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

...

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

<强> ODATA 是一类特殊的 REST 其中我们可以的查询数据均匀地从URL。

  

的OData(开放数据协议)是定义最好OASIS标准   实践中建立和使用RESTful API中。 OData的帮助你   专注于您的业务逻辑,同时建立RESTful API中没有   不必担心的方法来定义请求和响应   头,状态码,HTTP方法,URL惯例,媒体类型,   有效载荷格式和查询选项等的OData还指导你有关   跟踪更改定义函数/可重复使用的程序的行为   和发送异步/批处理请求等。另外,OData的   提供了扩展工具的履行任何自定义你的需求   RESTful API中。

     

的OData RESTful的API是容易消耗。该OData的元数据,一   这些API的数据模型的机器可读的描述中,使   创建强大的通用客户端代理和工具。一些   他们可以帮助您与OData的互动,甚至不知道什么   关于协议。以下6个步骤演示6有趣   在不同的编程平台的OData消费的场景。   但如果你是一个非开发人员,想简单地玩   OData的,XOData是你最好的开始。

http://www.odata.org/

详情

<强> REST 表示的 RE 表象<强>取值泰特的Ť转让(BOT),其是一种基于资源的建筑风格。基于资源意味着数据和功能被认为是资源。

<强>的OData 是一个基于网络协议,该协议定义了一组最佳实践用于构建和消费REST Web服务。的OData因此创建RESTful Web服务REST的实施方案的一种方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top