175

GraphQL は、型システム、クエリ言語と実行セマンティクス、静的検証、および型イントロスペクションで構成され、それぞれについて以下に概説します。これらの各コンポーネントについて説明するために、GraphQL のさまざまな部分を説明するために設計された例を作成しました。

- https://github.com/facebook/graphql

Falcor では、仮想 JSON グラフを介して、すべてのリモート データ ソースを単一のドメイン モデルとして表すことができます。データがどこにあっても、クライアントのメモリ内にあるか、サーバーのネットワーク上にあるかに関係なく、同じ方法でコーディングできます。

- http://netflix.github.io/falcor/

Falcor と GraphQL (Relay のコンテキストで) の違いは何ですか?

4

6 に答える 6

134

Angular Air Episode 26: FalcorJS and Angular 2を見てきました。Jafar HusainがGraphQL とFalcorJS の比較について回答しています。これは要約です(言い換え):

  • FalcorJS と GraphQL は同じ問題 (データのクエリ、データの管理) に取り組んでいます。
  • 重要な違いは、GraphQL はクエリ言語であり、FalcorJS はそうではないということです。
  • FalcorJS にリソースを要求するときは、値の有限系列を非常に明示的に要求しています。FalcorJS は範囲などをサポートしていgenres[0..10]ます。ただし、制限のないクエリはサポートしていませんgenres[0..*]
  • GraphQL はセット ベースです。true の場合はすべてのレコードを表示し、これで並べ替えます。この意味で、GraphQL クエリ言語は FalcorJS よりも強力です。
  • GraphQL には強力なクエリ言語がありますが、サーバー上でそのクエリ言語を解釈する必要があります。

Jafar は、ほとんどのアプリケーションでは、クライアントからサーバーに送られるクエリの種類は同じ形を共有していると主張しています。したがって、get や set などの特定の予測可能な操作を行うと、キャッシュを活用する機会が増えます。さらに、多くの開発者は、REST アーキテクチャで単純なルーターを使用してリクエストをマッピングすることに精通しています。

最後の議論は、GraphQL がもたらす力が複雑さを上回るかどうかについて解決します。

于 2015-08-24T08:09:24.340 に答える
29

GraphQL の背後にいるエンジニアの 1 人であるLee Byronは、 hashnode で AMA を実行しました。この質問に対する彼の回答は次のとおりです。

  • Falcor は Observables を返し、GraphQL は値のみを返します。NetflixがFalcorをどのように使用したかったかについて、これは彼らにとって非常に理にかなっています. それらは複数のリクエストを行い、準備ができたときにデータを提示しますが、クライアント開発者が Observables を直接操作する必要があることも意味します。GraphQL は要求/応答モデルであり、JSON を返します。これは簡単に使用できます。Relay は、プレーンな値のみを使用しながら、Falcor が提示するダイナミズムの一部を追加します。
  • 型システム。GraphQL は型システムの観点から定義されているため、GraphiQL、コード ジェネレーター、エラー検出などの多くの興味深いツールを構築することができました。Falcor はより動的で、それ自体は価値がありますが、実行する機能が制限されています。このようなこと。
  • ネットワークの使用。GraphQL は元々、Facebook のニュース フィードをさらにローエンドのネットワーク上のローエンドのデバイスで操作するために設計されたものであるため、レイテンシを最小限に抑えるために、1 つのネットワーク リクエストで必要なものすべてを宣言できるようにするために多大な努力を払っています。一方、Falcor は、多くの場合、追加のデータを収集するために複数の往復を実行します。これは、システムの単純さとネットワークの制御との間の単なるトレードオフです。Netflix の場合は、非常にローエンドのデバイス (Roku スティックなど) も扱っていますが、ビデオをストリーミングするのに十分なネットワークであることを前提としています。

編集: Falcor は確かにリクエストをバッチ処理できるため、ネットワークの使用状況に関するコメントが不正確になります。@PrzeoRに感謝

于 2016-05-13T05:49:53.323 に答える