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.