GraphQL 起源

时间退回到 2012年的一个下午, 美国加利福尼亚州, facebook 的工程师们发现他们才上架没多久的移动端应用就收到了很多差评, 用户反映app响应慢,耗电严重等,经过分析后发现, 应用在第一次启动时, 会请求大量的后端api接口, 这其中包括用户自己的信息, 好友发布的内容, 以及其他的热点信息, 等等。太多的 rest api 请求, 这就是问题所在。

facebook 的工程师就开始思考如何才能解决这个问题, 在经过大量的技术讨论之后, 他们想出了一个好方法, 和 rest api 对应的是一个个 endpoint, 能不能整合这些 endpoint 变成一个整体输出到前端呢?

他们这样做了, 并且很好用, 这项技术在 facebook 内部沉淀了三年, 在2015年, facebook 公开发布了 GraphQL。

到今天, 整个 GraphQL 生态系统、社区都已经非常成熟, 主流的开发语言按照 GraphQL 规范提供了实现, 并且有丰富的工具支持, Banana Cake Pop、GraphQL Playground 等。Github, Facebook 等公司都在生产环境使用了 GraphQL。

GraphQL 全称是 Graph Query Language,是一种查询语言, 像SQL, LINQ 都是常见的查询语言, 灵活且强大的查询功能是它的主要特点, 对于处理复杂的页面展示, 功能频繁变更, 这些都是 GraphQL 的强项, 为开发人员提供了极大的便利。

查询能力

向后端 API 发送 GraphQL 查询,它会准确的返回所需要的内容, 不多也不少!

聚合能力

在 rest api 上获取多个资源时, 通常要进行多次url请求, 而使用 GraphQL 的查询功能, 一次请求就可以获取多个资源, 这正是 GraphQL 的数据聚合能力。

GraphQL 的缺点

当然 GraphQL 并不是完美的, 它也有一些缺点。

查询深度限制 因为 GraphQL 支持关联查询, 当你有一个树结构时,你可能要考虑限制查询深度, 防止过度递归带来的问题。
文件上传 上传文件对于 GraphQL 确实是个大难题, 规范中并没有提到这个, 一种方式是一些 GraphQL 的库自己实现了上传功能,另一个方法就是用单独的程序使用Http的方式提供上传功能。
缓存 和 rest api 相比, 由于 GraphQL 的查询功能很灵活, 动态查询, 不是固定的资源, 所以它的缓存不太好做。

GraphQL for .NET

如果要在.NET 平台上使用 GraphQL, 下面是最流行的两个库, 你可以尝试使用它

•graphql-dotnet
https://github.com/graphql-dotnet/graphql-dotnet
stars: 5k commits: 1600+ contributors: 140+

•hot chocolate
https://github.com/ChilliCream/hotchocolate stars: 3k commits: 2200+ contributors: 140+

我个人比较喜欢用 hot chocolate, 上手简单, 工具也很多, 而且有意思的都是以甜品命名的, 热可可(GraphQL Server, 草莓奶昔(GraphQL Client), 绿色甜甜圈(DataLoader), 香蕉蛋糕(GraphQL IDE)。

总结

GraphQL 起初是为移动应用构建的, 和 rest api 不一样的是, 它有出色的数据聚合能力和查询能力, 在处理复杂的页面以及需求快速迭代的场景时, 不过是探囊取物。

GraphQL 到底有什么魔力?相关推荐

  1. Gartner魔力象限到底有何“魔力”?

    简介:Gartner魔力象限到底有何"魔力"? 供稿团队:阿里云市场部 近日,Gartner发布了一系列最新魔力象限报告,在IT圈掀起了阵阵"龙卷风",谁跻身全 ...

  2. vue 打卡图片_掀起ins打卡潮的《小丑》台阶到底有什么魔力?

    原标题:掀起ins打卡潮的<小丑>台阶到底有什么魔力? 最后两天! Des centaines de touristes et instagrameurs se ruent sur les ...

  3. 智汀智能家居到底有什么魔力,引来如此多的入局者?

    近年来,智能家居势头如火如荼,智能电视.智能窗帘.智能门锁......纷纷入局到家庭中,使得整个行业逐渐迈入全屋智能化时代.然而,在这智能化大潮之下,智能家居到底有什么魔力,引来如此多的入局者呢? 你 ...

  4. 高通骁龙 8155 到底有什么魔力?

    高通骁龙8155采用安卓系统,兼容性更好,APP的数量也就相当多,硬件方面,这颗芯片最高支持3个4K屏或4个2K屏,4个麦克风6颗摄像头,还有WiFi6.5G.蓝牙5.0等功能,所以现在很多车有3块大 ...

  5. 一杯奶茶排队3万号,茶颜悦色到底有何魔力??

    一杯奶茶排队3万号,茶颜悦色到底有何魔力?? 近日,茶颜悦色品牌在官博上宣布其快闪店在深圳开业,据微博上网友们公布的数据来看,开业仅短短4小时,就已经取了3万多号,毫无意外,茶颜悦色快闪店空降深圳,享 ...

  6. 连续两次入围Gartner魔力象限的Quick BI到底有何魔力?

    大数据产业创新服务媒体 --聚焦数据 · 改变商业 日前,国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告(<Magic Quadrant for Analytics ...

  7. 阿里、百度、腾讯都选择 Flink,它到底有什么魔力?

    来自:QCon 从媒体的资讯推送,到购物狂欢的实时数据大屏,实时计算已经应用到了多个生活.工作场景,随着业务的快速增长,我们对实时计算的需求越来越高. 可用于实时计算的开源大数据计算引擎有多种选择,比 ...

  8. 抖音日活用户破 6 亿,推荐系统到底有何魔力?

    如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加高效的连接了. 不得不说抖音的推荐系统,太厉害了.刷了啥,立刻记住你的偏好,推荐相似内容,一不小心 2 小时就过去了,让人欲罢不能,要么日 ...

  9. 吴恩达都在做的AI农业到底有什么魔力?

    但在眼下,农民有时候并不"信任"AI,甚至不采用AI. AI能干什么? 它能与人类交流,能帮助人类识别并抓捕嫌疑犯,也能够协助医生进行诊断--不知不觉间,AI已经深度渗透人类的生活 ...

最新文章

  1. ubuntu16.04安装mysql5.7.15
  2. smarty模板中类似for的功能实现
  3. php软件安装及调试_PHP调试利器XDebug的安装与使用
  4. 这100道Python面试题,你会几道?
  5. 锁定机制和数据并发管理(笔记)
  6. 【Python】循环的拓展
  7. python课程结课感悟_科学网—《互联网+引论与Python》课堂感想(七) - 张忆文的博文...
  8. [NOIP2014] 寻找道路
  9. 微服务之间最佳调用方式是什么?
  10. 【原创】asp.net静态页面生成方案
  11. Warning: Stopping rpcbind.service, but it can still be activated by:rpcbind.socket
  12. 表格闪退怎么解决_win10中excel2013闪退怎么修复_win10中excel2013闪退如何解决
  13. W25Q64Flash芯片
  14. 第5章 软件质量标准概述
  15. Leetcode 75. 颜色分类
  16. (详细)华为荣耀8青春 PRA-AL00的usb调试模式在哪里开启的流程
  17. python小练习之货币转换
  18. 荣誉加持,驭势科技近期斩获奖项回顾
  19. warning:In file included from...
  20. David Silver强化算法学习地址和PPT

热门文章

  1. zabbix自动发现(Discovery)功能使用
  2. .net知识和学习方法系列(十四)TraceListener的应用
  3. 熊猫烧香是天才作品吗?
  4. 黑马C++设计模式2
  5. Windows下的HEAP溢出及其利用
  6. 【agc004f】Namori Grundy
  7. 男人会为女人改变多少
  8. 交换网络中的sniffer讨论-基于交换网络的ARP spoofing sniffer
  9. 如何衡量两个词的相关度
  10. python图片内容长度识别_Python实现识别图片内容的方法分析