【发布时间】:2014-04-03 15:15:59
【问题描述】:
我已经在使用标准的 WebAPI 并将 JSON 对象返回给我的客户端。现在我看到了一个返回 OData 的应用程序。
如果我不想从浏览器中运行的我自己的客户端以外的任何东西查询我的数据,是否有任何理由让我使用 OData。使用 OData 可以获得哪些优势?
【问题讨论】:
我已经在使用标准的 WebAPI 并将 JSON 对象返回给我的客户端。现在我看到了一个返回 OData 的应用程序。
如果我不想从浏览器中运行的我自己的客户端以外的任何东西查询我的数据,是否有任何理由让我使用 OData。使用 OData 可以获得哪些优势?
【问题讨论】:
如果您只在自己的浏览器应用程序中使用您的数据,那么在您的情况下使用 OData 的优势很少:
IQueryable,因此您可以在客户端决定如何过滤服务提供的数据。因此,您不必实施各种操作或使用查询参数来提供过滤数据。这也意味着,如果您的客户端需要一个新的过滤器,您很可能不必更改服务器,只需在客户端提出查询即可。可能的过滤器包括用于过滤数据的 $filter 表达式,以及在分页数据时有用的操作,如 $skip 和 $top。有关 OData 和查询的详细信息,请参阅link。有关 OData 和 Web API 的完整概述,请参阅link。
【讨论】:
以下是 OData 的一些优点。
这里有几个参考链接。
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
【讨论】:
我同意已经发布的答案,但作为补充见解......
你提到过:
...如果我不想从我自己以外的任何地方查询我的数据 客户端在浏览器中运行...
您可能不希望正常通过您自己的 cilent 之外的任何方式运行它,但使用 oData 您可以使用其他查询工具进行调试。例如,LinqPad 允许您使用 oData 端点(例如 stackoverflow 提供的端点)。
如果您没有其他理由来实施 oData,这可能不是一个足够好的理由,但这是一个额外的好处。
【讨论】: