A equipe “Fun Propulsion Labs” do Google recentemente abriu o código do FlatBuffers. Construído para suprir necessidades de desempenho de desenvolvedores de jogos, o FlatBuffers armazena dados serializados em buffers que podem ser tanto guardados em arquivo ou transferidos via rede, sem nenhuma sobrecarga de parsing.
Alguns dos principais recursos do FlatBuffers são:
- Acesso a dados serializados sem empacotamento/desempacotamento;
- Velocidade e eficiência de memória – apenas o tamanho do buffer é necessário para acessar os dados; não requer alocação de memória adicional para acessar o buffer;
- Flexibilidade – compatibilidade entre versões via de campos opcionais;
- Código-fonte gerado é muito pequeno;
- Fortemente tipado – erros são capturados em tempo de compilação e vez de em tempo de execução;
- Conveniência – código sucinto por meio da geração de cabeçalhos C++. Funcionalidade opcional para fazer parse de esquemas e representações JSON em tempo de execução de maneira eficientemente (mais veloz e com uso mais eficiente de memória em relação a outros interpretadores JSON);
- Multiplataforma: escrito em C++ sem dependências fora da STL, portanto pode ser utilizado em qualquer plataforma que possua um compilador C++. Atualmente, o projeto inclui métodos para construir bibliotecas para Android, Linux, Windows e OSX.
A vantagem do FlatBuffers sobre soluções alternativas, como Protocol Buffers ou interpretadores JSON, é possuir menor sobrecarga, especialmente devido à ausência de analisadores.
Utilizar o FlatBuffers em C++ envolve os seguintes passos:
- Crie um arquivo de schema utilizando a DSL especificada;
- Use o compilador de schema para gerar os arquivos de cabeçalho C++;
- Inclua em seu programa o arquivo de cabeçalho gerado (é necessário também que o arquivo flatbuffers/flatbuffers.h esteja no caminho de seu programa);
- Leia e escreva dados utilizando a classe FlatBufferBuilder (que constrói o flat buffer binário).
Há ainda algumas limitações, e o suporte para Java também é experimental neste estágio. O suporte para C# é um dos pedidos mais populares, e pode chegar no próximo lançamento.
Mais informações sobre o FlatBuffers estão disponíveis na documentação.
Com informações de InfoQ