在研究一些Web服务时,我遇到了微软称之为OData的"new"技术 . 通过阅读他们在OData中的描述,我很难区分OData和REST-ful Web服务 . 有人可以帮我理解差异吗?
UPDATE 警告,现在OData V4可用,这个答案已经过时了 .
我刚刚写了一篇关于这个主题的帖子here .
正如Franci所说,OData基于Atom Pub . 但是,他们在顶部分层了一些功能,遗憾的是忽略了流程中的一些REST约束 .
OData服务的查询功能要求您根据响应中不可用或链接的信息构造URI . 这是REST人们称之为带外信息并引入客户端和服务器之间隐藏耦合的内容 .
引入的另一个耦合是通过使用EDMX元数据来定义条目内容中包含的属性 . 可以在名为$ metadata的固定 endpoints 上发现此元数据 . 同样,客户需要提前知道,无法发现 .
不幸的是,微软认为不适合创建媒体类型来描述这些关键数据,因此任何OData客户端都必须对它正在与之交谈的服务及其接收的数据做出一系列假设 .
REST是一种通用设计技术,用于描述如何访问Web服务 . 使用REST,您可以发出http请求以获取数据 . 如果你在浏览器中尝试它,就像去一个网站,除了返回一个网页,你会得到回来的XML . 某些服务还将返回JSON格式的数据,这些数据更易于使用Javascript .
OData是一种通过REST公开数据的特定技术 .
如果你想快速总结一下,可以把它想象成:
REST - 设计模式
OData - 启用技术
REST 代表 RE presentational S tate T ransfer,这是一种基于资源的建筑风格 . 基于资源意味着数据和功能被视为资源 .
OData 是一个基于Web的协议,它定义了一组用于构建和使用RESTful Web服务的最佳实践 . OData是一种创建RESTful Web服务的方法,因此是REST的实现 .
2012年OData经历了标准化,所以我只是在这里添加一个更新 .
首先是定义:
REST - 是一种如何通过HTTP发送消息的体系结构 .
OData V4 - 是REST的一个特定实现,真正定义了不同格式的消息内容(目前我认为是AtomPub和JSON) . ODataV4遵循休息原则 .
例如,asp.net人员将主要使用WebApi控制器将对象序列化/反序列化为JSON,并让javascript对其执行某些操作 . Odata的观点是能够使用开箱即用的选项直接从URL查询 .
OData协议 Build 在AtomPub协议之上 . AtomPub协议是REST API设计的最佳示例之一 . 所以,从某种意义上说,你是对的 - OData只是另一个REST API,每个OData实现都是一个REST-ful Web服务 .
不同之处在于OData是一种特定的协议; REST是架构风格和设计模式 .
OData(开放数据协议)是一种OASIS标准,它定义了构建和使用RESTful API的最佳实践 . OData可帮助您在构建RESTful API时专注于业务逻辑,而无需担心定义请求和响应头,状态代码,HTTP方法,URL约定,媒体类型,有效负载格式和查询选项等的方法.OData还指导您跟踪更改,定义可重用过程的功能/操作以及发送异步/批量请求等 . 此外,OData还提供扩展功能,以满足RESTful API的任何自定义需求 . OData RESTful API易于使用 . OData元数据是API数据模型的机器可读描述,可以创建功能强大的通用客户端代理和工具 . 其中一些可以帮助您与OData交互,即使不知道任何有关协议的信息 . 以下6个步骤演示了不同编程平台上OData消耗的6个有趣场景 . 但如果您是非开发人员并且想简单地使用OData,那么XOData对您来说是最好的开始 .
欲了解更多详情,请致电http://www.odata.org/
来自OData documentation:
OData协议是一种应用程序级协议,用于通过RESTful Web服务与数据交互 . ... OData协议与其他基于REST的Web服务方法的不同之处在于它提供了一种统一的方式来描述数据和数据模型 .
ODATA 是一种特殊的 REST ,我们可以从URL中 query data uniformly .
8 回答
UPDATE 警告,现在OData V4可用,这个答案已经过时了 .
我刚刚写了一篇关于这个主题的帖子here .
正如Franci所说,OData基于Atom Pub . 但是,他们在顶部分层了一些功能,遗憾的是忽略了流程中的一些REST约束 .
OData服务的查询功能要求您根据响应中不可用或链接的信息构造URI . 这是REST人们称之为带外信息并引入客户端和服务器之间隐藏耦合的内容 .
引入的另一个耦合是通过使用EDMX元数据来定义条目内容中包含的属性 . 可以在名为$ metadata的固定 endpoints 上发现此元数据 . 同样,客户需要提前知道,无法发现 .
不幸的是,微软认为不适合创建媒体类型来描述这些关键数据,因此任何OData客户端都必须对它正在与之交谈的服务及其接收的数据做出一系列假设 .
REST是一种通用设计技术,用于描述如何访问Web服务 . 使用REST,您可以发出http请求以获取数据 . 如果你在浏览器中尝试它,就像去一个网站,除了返回一个网页,你会得到回来的XML . 某些服务还将返回JSON格式的数据,这些数据更易于使用Javascript .
OData是一种通过REST公开数据的特定技术 .
如果你想快速总结一下,可以把它想象成:
REST - 设计模式
OData - 启用技术
REST 代表 RE presentational S tate T ransfer,这是一种基于资源的建筑风格 . 基于资源意味着数据和功能被视为资源 .
OData 是一个基于Web的协议,它定义了一组用于构建和使用RESTful Web服务的最佳实践 . OData是一种创建RESTful Web服务的方法,因此是REST的实现 .
2012年OData经历了标准化,所以我只是在这里添加一个更新 .
首先是定义:
REST - 是一种如何通过HTTP发送消息的体系结构 .
OData V4 - 是REST的一个特定实现,真正定义了不同格式的消息内容(目前我认为是AtomPub和JSON) . ODataV4遵循休息原则 .
例如,asp.net人员将主要使用WebApi控制器将对象序列化/反序列化为JSON,并让javascript对其执行某些操作 . Odata的观点是能够使用开箱即用的选项直接从URL查询 .
OData协议 Build 在AtomPub协议之上 . AtomPub协议是REST API设计的最佳示例之一 . 所以,从某种意义上说,你是对的 - OData只是另一个REST API,每个OData实现都是一个REST-ful Web服务 .
不同之处在于OData是一种特定的协议; REST是架构风格和设计模式 .
欲了解更多详情,请致电http://www.odata.org/
来自OData documentation:
ODATA 是一种特殊的 REST ,我们可以从URL中 query data uniformly .