将OData与Web API一起使用有什么好处?

时间:2014-04-03 05:08:44

标签: asp.net asp.net-web-api

我已经在使用标准WebAPI并将JSON对象返回给我的客户端。现在我看到一个返回OData的应用程序。

如果我不想从浏览器中运行的客户端以外的任何其他方式查询我的数据,有人可以解释我是否有任何理由使用OData。使用OData可以获得哪些优势?

3 个答案:

答案 0 :(得分:8)

如果您只在自己的浏览器应用程序中使用数据,那么在您的情况下使用OData的好处很少:

  1. OData能够提供有关您的服务接口的元数据,可用于生成访问服务的客户端代码。因此,如果您需要创建许多客户端类,这可以加快您的流程。另一方面,如果您可以在服务器和基于ASP.NET的客户端之间共享类,或者如果您只有几个类,则可能与您的情况无关。
  2. 在您的情况下,另一个更大的优势是支持针对服务数据的通用查询。 OData支持IQueryable,以便您可以在客户端决定如何过滤服务提供的数据。因此,您不必实现各种操作或使用查询参数来提供过滤数据。这也意味着如果您需要为客户端使用新的过滤器,则很可能您不必更改服务器,只需在客户端提出查询即可。可能的过滤器包括用于过滤数据的$ filter表达式,以及在分页数据时有用的$ skip和$ top等操作。有关OData和查询的详细信息,请参阅此link
  3. 有关OData和Web API的完整概述,请参阅此link

答案 1 :(得分:1)

OData的一些优点。

  1. OData是一个由Microsoft启动的开放协议,它基于Rest服务,因此我们可以根据URL获取数据。
  2. 它支持各种协议,如http,atom,pub,也支持JSON格式。
  3. 无需创建我们过去在Web服务中执行的代理类。
  4. 您可以编写自己的自定义方法。
  5. 它的重量非常轻,因此与Web服务和其他技术相比,客户端和服务器之间的交互速度会很快。
  6. 使用非常简单。
  7. 以下是一些参考链接。

    http://sandippatilprogrammer.wordpress.com/2013/12/03/what-is-odata-advantages-and-disadvantages/

    http://geekswithblogs.net/venknar/archive/2010/07/08/introduction-odata.aspx

    http://www.zdnet.com/blog/microsoft/why-microsofts-open-data-protocol-matters/12700

答案 2 :(得分:0)

我同意已发布的答案,但作为额外见解......

你提到过:

  

...如果我不想从我自己以外的任何地方查询我的数据   客户端在浏览器中运行...

您可能不希望通过除自己的cilent之外的任何东西正常运行,但使用oData可以使用其他查询工具进行调试。例如LinqPad允许您使用oData端点(例如stackoverflow提供的端点)。

如果您没有其他理由这样做,那么实施oData可能不是一个足够好的理由,但这是一个额外的好处。