OData 协议文档 ( http://www.odata.org/documentation ) 描述了两个版本 - 2 和 3。
两个版本的核心区别是什么?
现有客户端库是否支持这两个版本,或者版本 2 是否被视为“旧版”?
换种说法 - 版本 2 客户端与版本 3 兼容吗?
OData 协议文档 ( http://www.odata.org/documentation ) 描述了两个版本 - 2 和 3。
两个版本的核心区别是什么?
现有客户端库是否支持这两个版本,或者版本 2 是否被视为“旧版”?
换种说法 - 版本 2 客户端与版本 3 兼容吗?
两个版本之间有很多不同之处。例如,OData v3 添加了对操作、函数、集合值、派生类型的导航属性和流属性的支持。它还为 JSON 引入了一种全新的序列化格式(“application/json”在两个版本中意味着完全不同的东西)。
当 OData 客户端向服务器发出请求时,它可以(并且应该)通过 MaxDataServiceVersion HTTP 标头指定它可以理解的最大协议版本。只理解 v2 协议的客户端将无法理解 v3 有效负载。
我认为我不会将 v2 称为“旧版”或不受支持,但各个服务器可以选择是否支持只能理解 v2(或 v1)的请求。我认为那里的许多现有客户都支持 v2 和 v3。我知道 WCF 数据服务客户端(桌面、Windows Phone、Windows 商店和 Silverlight)都支持这两者。
除了先前的答案之外,请注意,某些客户端工具可能仍仅支持 OData v2 协议,因此如果您需要 v3 特定功能,则应确保您的客户端代码不受诸如自动生成的代理类之类的限制能够处理数组类型。
以下是服务器公开 v3 功能但无法使用它们的示例,因为 Visual Studio WCF 数据服务客户端代理生成器仅支持 v2:
您可以在开放数据协议 (OData) 规范的 pdf 中找到两个版本之间所有差异的列表。具体来说,变更日志位于“ 1.7 版本控制和能力协商”部分