【问题标题】:OData vs GraphQL [closed]OData vs GraphQL [关闭]
【发布时间】:2018-11-14 04:30:01
【问题描述】:

GraphQL & OData 在性能、开发者可用性、社区等方面有没有很好的比较。我在网上找到的所有文章都非常有偏见。

返回庞大的 JSON 或二进制数据的最佳方式是什么?

【问题讨论】:

标签: odata graphql


【解决方案1】:

我已经研究并尝试使用 Dot Net 中的 GraphQL 和 DotNet Web API 中的 Odata 来创建一个工作演示,我发现的是

  1. 开发者可用性考虑到您有现有的 WebAPI(DotNet 框架)并希望迁移到与 GraphQL 或 OData 兼容的 WebAPI,那么我的答案是选择 OData,因为它易于集成且不兼容Box Filter、OrderBy、Select、Expand 等功能(请参阅MSFT On DotNet OData)。如果您选择 GraphQL,那么您必须做很多工作,例如为每个查询创建类型、架构和查询以及实施解析器。
  2. 性能取决于您的查询逻辑。 GraphQL 和 Odata 都可以在 OData 中使用 $select 获取您请求的内容,在 GraphQL 中您可以通过它们的查询约定来请求。
  3. 从头开始 API 开发,如果您只希望所有 API 请求的单个端点并且不想维护版本控制端点、Autosuggest 字段名称和模式类型,那么 GraphQL 是最佳选择。但是每个框架和社区的 GraphQL 库的可用性因技术堆栈而异(例如 nodejs、C#、Ruby、Java 等)

是的,我已经查看并阅读了Telerik 的文章,其中有详细描述。 比较 PDF For GraphQL and Odata 我附上了并排比较图片,只有你可以在参考链接GraphQL vs OData中挖掘细节。

标准 API

这里,API Versioning/maintenance 中的 No 是积极的意思是单个端点并摆脱两个版本化的 API

查询能力

地表能力

当您希望以最少的工作量为 CRUD 操作提供对数据库的访问时,主要使用 OData 服务。

但是,如果您了解 Sharepoint REST API 和 Office 365 REST API 它基于 OData 并提供广泛的 API。现在微软正在构建通用 API,称为 Graph API 或 Microsoft Graph,默认情况下启用 CORS 请求和统一端点来请求来自 Office 365、dynamics 365、Outlook Exchange API、Onedrive API 等。它们也支持 OData。

【讨论】:

【解决方案2】:

使用 POST 方法请求数据似乎也不是一个好主意。显然,向服务器发出请求所需的数据量要大得多。根据Sumit Sarkar article的例子:

GraphQL 中为发出请求而传输的数据量远大于 OData。虽然,结果(响应)是一样的。

【讨论】:

  • 更大的请求,你正在使用 HTTP POST 查询数据,感觉很脏。
  • 感觉很脏,但是在 API 成熟之后,您最终会在 OData 端点上至少执行一些自定义操作,您必须将参数发布到以检索一组专门的数据。我是 100% 的 OData 专业人士,但 GraphQL 确实解决了对其中一些自定义操作的需求,这些操作可以处理您无法通过 Url 约定执行的复杂查询。
  • 但是 JSON 比 URL 查询字符串更灵活,更易读。
猜你喜欢
  • 2013-07-30
  • 2017-09-04
  • 2012-10-28
  • 1970-01-01
  • 2017-04-29
  • 2018-02-14
  • 1970-01-01
  • 2017-07-19
相关资源
最近更新 更多