odata - OData 与 GraphQL
问题描述
GraphQL & OData 在性能、开发者可用性、社区等方面有没有很好的比较。我在网上找到的所有文章都非常有偏见。
返回庞大的 JSON 或二进制数据的最佳方式是什么?
解决方案
我已经研究并尝试使用 Dot Net 中的 GraphQL 和 DotNet Web API 中的 Odata 来创建一个工作演示,我发现的是
- 开发人员可用性考虑到您有现有的 WebAPI(DotNet 框架)并希望迁移到 GraphQL 或 OData 兼容的 WebAPI,那么我的答案是选择 OData,因为它易于集成和开箱即用的过滤器、OrderBy、选择、扩展等功能(请参阅MSFT 在 DotNet OData 上)。如果您选择 GraphQL,那么您必须做很多工作,例如为每个查询创建类型、模式和查询以及实施解析器。
- 性能取决于您的查询逻辑。GraphQL 和 Odata 都能够在 OData 中使用$select获取您请求的内容,在 GraphQL 中您可以通过它们的查询约定来请求。
- 从头开始 API 开发,如果您只希望所有 API 请求的单个端点并且不想维护版本控制端点、自动建议字段名称和模式类型,那么 GraphQL 是最佳选择。但是每个框架和社区的 GraphQL 库的可用性因技术堆栈(例如nodejs、C#、Ruby、Java等)而异
是的,我已经阅读并阅读了Telerik的文章,其中有详细描述。GraphQL 和 Odata 的比较 PDF 我附上并排比较图像,只有您可以在参考链接GraphQL vs OData中挖掘细节。
标准 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。
推荐阅读
- python - 在 Windows 10 C++ 版本上构建和安装 OpenCV 4.3.0 失败。如何修复 Visual Studio Community 2019 报告的错误?
- python - 如何在 django 中对带有分页的单页博客使用基于类的视图
- java - 如何解决在 xml 文件上添加图像以进行 Android 开发的问题..?
- python - 应用 K 最近邻算法会导致方法序列出现问题
- python - 如何在 Python 中逐行计算数据框的小计?
- web-scraping - Scrapy - 如何保存通过 POST 提交生成的文件
- gstreamer - 通过 udpsink gstreamer 发送 mkv 文件
- java - 允许 Java 方法参数接受构造函数参数
- json - 使用复制命令将 GeoJSON 文件加载到 redshift
- c - 命名信号量而不是互斥量 - 没有多线程的读者作者问题