zoukankan      html  css  js  c++  java
  • OData – OData vs GraphQL

    GraphQL 很火, 很厉害, 但是它和 OData 有本质的区别. 所以并不是说任何一样对比另一个绝对的好.

    GraphQL is not OData

    twitter 的讨论

    有几个点是我能 Get 的到的.

    OData = SQL in URL

    OData was a way to serialize a SQL statement into a URL (OData 就像 SQL 语句的 URL 版本)

    it challenging to limit the exposure 要限制 client side 的 query 能力是很困难的.

    OData Standardized

    OData 的规范是它的优势, 就好比 RPC 对 RESTful一样. RESTful 有规范, 容易理解, 但是不容易表达万物. RPC 则可以表达万物, 但又太没有规范了.

    Flaws in OData

    OData 通常和 database schema 邦的比较紧 (所以说它像 SQL Query), 一旦 schema 换了, 但又想维护旧的版本会比较难.

    OData 偏向统一管理, 很难对特殊案例做优化.

    最好的描述

    OData 像 SQL Query, GraphQL 像 stored procedure. 你慢慢品.

    所以这 2 者一定是共存的, 而且是互相补助的. 

    总结

    OData 像 SQL Query, GraphQL 像 stored procedure.

    OData 像 RESTful, GraphQL 像 RPC

    当你希望简单统一的时候, 你会觉得 RESTFul 很棒, SQL Query 就够用了, OData 很好.

    但当你遇到特别情况, 没办法用简单的方式的时候, RPC, stored procedure, GraphQL 就凸显它的魅力了. 

    我们看双方的使用场景. OData 倾向于企业应用的 API, SAP 这类. 通常是比较简单的, 关系数据库 pattern.

    GraphQL 则是互联网应用, 公开的 API,  whatever 类型数据形式的 (比如 NoSQL)

    所以总结 GraphQL 比 OData 可以表达更多 (更自由), OData 比 GraphQL 有规则 (更约束)

    到底是哪一个, 还是对外 GraphQL, 对内用 OData, 真的是看项目用了才知道呢.

  • 相关阅读:
    UVA 10066 The Twin Towers
    UVA 10192 Vacation
    hdu 5018 Revenge of Fibonacci
    hdu 5108 Alexandra and Prime Numbers
    UVA 10252
    UVA 10405最长公共子序列
    数塔
    hdu 2602
    面向对象(五)
    面向对象(三)
  • 原文地址:https://www.cnblogs.com/keatkeat/p/15760121.html
Copyright © 2011-2022 走看看