NetflixがFalcorというJavaScriptライブラリをオープンソース化した。これは複数のリソースからJSONデータを取得するためのモデルと非同期メカニズムを提供する。
NetflixはWebアプリケーションのUIにJSONデータを投入するのにFalcorを使っている。メモリキャッシュや複数のデータベースからやってくるバックエンドデータはすべて、単一のバーチャルJSONオブジェクトにモデル化される。「バーチャル」と呼んでいるのは、実際にはデータはローカルもしくはリモートのデータベースに存在しているのに、クライアントから見ると、メモリ上にあるように見えるためだ。
データは、get
、set
、call
の非同期操作を備えたDataSourceインターフェイスを使って、JSONグラフを通して利用できる。クライアントは、JSONデータを直接アクセスするときとよく似たJavaScriptパスを使って、グラフをトラバースすることができる。デモのため、次の小さなJSONオブジェクトについて考えよう。
{ "greeting": "Hello World" }
このオブジェクトがファイルmodel.json
に格納されているとき、そのアクセスは次のようになる。
<script src="https://netflix.github.io/falcor/build/falcor.browser.js"></script>
<script>
var model = new falcor.Model({source: new falcor.HttpDataSource('/model.json') });
// バーチャルJSONリソースのルートから "greeting" キーを取得する。
get("greeting").
then(function(response) {
document.write(response.json.greeting);
});
</script>
FalcorにはRouterが含まれており、実際のデータストアを隠蔽し、データ取得を担当する適切なバックエンドサービスに呼び出しを振り向ける。また、データベースに対する連続の呼び出しを避けるため、データ取得時には、データをキャッシュする。Falcorは複数のリクエストを単一のネットワークリクエストにまとめることができ、すでに発行中のものがあれば、重複したデータベースリクエストを発行しないようになっている。
NetflixはFalcorをGitHubに公開しており、コミュニティにバグの発見と修正、そして各種MVCフレームワークとの統合に協力を求めている。