OData和REST Web服务之间的区别
在研究一些网络服务时,我遇到了微软称之为OData的这种“新”技术。 阅读FAQ中关于OData的描述,我很难区分OData和REST-ful web服务。 有人能帮助我理解差异吗?
更新警告,这个答案是极其过时的,现在OData V4可用。
前一段时间,我在这个主题上写了一篇文章。
正如Franci所说,OData基于Atom Pub。 然而,他们已经在顶层分层了一些功能,不幸的是在这个过程中忽略了一些REST约束。
OData服务的查询功能要求您根据不可用或链接到响应中的信息构建URI。 这是REST人员调用带外信息并引入客户端和服务器之间的隐藏耦合。
引入的另一个耦合是通过使用EDMX元数据来定义条目内容中包含的属性。 这个元数据可以在名为$ metadata的固定端点上发现。 再次,客户需要事先知道这一点,它不能被发现。
不幸的是,微软并不认为适合创建媒体类型来描述这些关键的数据片段,所以任何OData客户端都必须对它正在与之交谈的服务及其接收的数据做出一系列假设。
OData协议建立在AtomPub协议之上。 AtomPub协议是REST API设计的最佳例子之一。 所以,从某种意义上说,你是对的 - OData只是另一个REST API,每个OData实现都是一个REST-ful Web服务。
不同的是OData是一个特定的协议; REST是架构风格和设计模式。
REST是一种通用设计技术,用于描述如何访问Web服务。 使用REST可以使http请求获取数据。 如果你在浏览器中尝试它,它就像去一个网站,除了返回一个网页,你会回到XML。 有些服务还会以JSON格式返回数据,这些数据更易于在Javascript中使用。
OData是通过REST公开数据的特定技术。
如果你想快速总结一下,可以把它想成:
上一篇: Difference between OData and REST web services
下一篇: What are the differences between WCF and ASMX web services?