OData和RESTful Web服务之间有什么区别?
更新:警告,由于OData V4已经出现,此答案现在已经非常过时了。
我之前写过一篇关于这个主题的文章这里。
正如Franci所说,OData基于Atom Pub。但是,在此基础上他们添加了一些功能,不幸的是在这个过程中忽略了一些REST的限制。
OData服务的查询能力要求你构造基于响应中不可用或链接的信息的URI。这就是REST人们称为超出绑定信息,并引入了客户端和服务器之间的隐藏耦合。
引入的另一个耦合是通过使用EDMX元数据来定义条目内容中包含的属性。此元数据可以在称为$metadata的固定端点处发现。同样,客户端需要预先知道这一点,它不能被发现。
不幸的是,微软没有考虑创建描述这些关键数据的媒体类型,因此任何OData客户端都必须对其所连接的服务和接收到的数据做出大量假设。
OData协议是建立在AtomPub协议之上的。AtomPub协议是REST API设计的最佳实践之一。因此,在某种程度上,您是正确的 - OData只是另一个REST API,每个OData实现都是RESTful Web服务。
区别在于OData是一种特定的协议;REST是一种架构风格和设计模式。
REST是一种通用的设计技术,用于描述如何访问Web服务。使用REST,您可以发出HTTP请求来获取数据。如果您在浏览器中尝试它,它就像访问一个网站一样,但返回的不是网页,而是XML。有些服务还会返回JSON格式的数据,这对JavaScript更容易使用。
OData是通过REST公开数据的特定技术。
如果你想快速概括一下,可以这样说:
OData协议是通过RESTful web服务与数据进行交互的应用级协议。
...
OData协议不同于其他基于REST的web服务方法,因为它提供了一种统一的方式来描述数据和数据模型。
ODATA是一种特殊的REST,我们可以通过URL 统一查询数据。
REST代表着表现层状态转移,是一种基于资源的架构风格。基于资源意味着数据和功能被视为资源。
OData是一种基于Web的协议,它定义了一组构建和使用RESTful Web服务的最佳实践。OData是创建RESTful Web服务的一种方式,因此它也是REST的一种实现。