首页 > 解决方案 > OData 与 GraphQL

问题描述

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

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

标签: odatagraphql

解决方案


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

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

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

标准 API

标准 API

在这里, API 版本控制/维护中的是积极的意思是单一端点并摆脱两个版本化的 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。


推荐阅读