2013-02-06 66 views

回答

7

这两个版本有很多不同之处。例如,OData v3添加了对动作,函数,集合值,派生类型的导航属性和流属性的支持。它还为JSON引入了一种全新的序列化格式(“application/json”意味着两个版本中完全不同的东西)。

当OData客户端向服务器发出请求时,它可以(也应该)通过MaxDataServiceVersion HTTP头指定它可以理解的最大协议版本。只编写协议的客户端将无法理解v3有效负载。

我不认为我会打电话给v2“遗留”或不支持,但个别服务器可以选择是否支持只能理解v2(或v1)的请求。我认为许多现有的客户端支持v2和v3。我知道WCF数据服务客户端(桌面,windows phone,windows store和silverlight)都支持这两种客户端。

+0

谢谢!了解与可用文档的差异是非常棘手的。 –

1

除了以前的答案,请注意,某些客户端工具可能仍然只支持OData v2协议,因此如果您需要v3特定功能,则应确保您的客户端代码不受像自动生成的代理不能处理数组类型的类。

下面是一个例子,当服务器公开V3的功能,但它是不可能的,因为Visual Studio的WCF数据服务客户端代理生成器仅支持V2使用它们:

http://bloggingabout.net/blogs/vagif/archive/2012/12/16/using-odata-protocol-v3-with-mongodata-odata-provider.aspx