O Netflix liberou o código fonte do Falcor, uma biblioteca que oferece um mecanismo assíncrono e um modelo de obter dados JSON de múltiplas fontes.
O Falcor serve para popular a interface do usuário das aplicações web com dados JSON. Todos os dados do backend são obtidos através de um cache em memória ou de múltiplos bancos de dados e mapeados para um simples objeto virtual JSON. Esse formato é chamado de "virtual" devido ao fato de na perspectiva dos clientes os dados parecerem estar na memória, embora o mesmo possa residir localmente ou em bancos de dados remotos.
Os dados são disponibilizados através de um JSON graph, usando a interface DataSource as seguintes operações assíncronas estão disponíveis: get, set e call. O cliente pode percorrer o graph usando JavaScript de maneira semelhante à forma de acessar os dados JSON diretamente. Para fins de demonstração, considere esse simples objeto JSON:
{ "greeting": "Hello World" }
Se este objeto é armazenado no arquivo model.json, então o acesso é feito da seguinte forma:
<script src="https://netflix.github.io/falcor/build/falcor.browser.js"></script> <script> var model = new falcor.Model({source: new falcor.HttpDataSource('/model.json') }); // retorna a chave "greeting" da raiz do JSON Virtual model. get("greeting"). then(function(response) { document.write(response.json.greeting); }); </script>
O Falcor inclui um roteador que esconde o armazenamentos dos dados reais e direciona as chamadas para os serviços de backend responsáveis em obter os dados. Além disso, quando os dados são recuperados, os mesmos são armazenados em cache para evitar requisições subsequentes a base de dados. O Falcor também pode executar múltiplas requisições em lote, fazendo uma única solicitação de rede, e não emite solicitações de banco de dados duplicadas caso já exista um requisição em andamento.
O Netflix disponibilizou o Falcor no GitHub, pedindo ajuda à comunidade para encontrar e corrigir bugs, e integrá-lo com vários frameworks MVC. Mais informações na página do projeto Falcor.