A troca de mensagens no formato JSON é o método mais comum de comunicação dentro de um sistema, entretanto não é o mais performático, para obter uma melhor performance é necessário otimizar o tamanho das mensagens, para isso utilizamos o processo de serialização, transformando o formato de uma mensagem em outro.
Existem diversas bibliotecas de serialização, sendo a Flatbuffers uma das mais performáticas. O presente artigo tem como objetivo discorrer sobre algumas funcionalidades dessa biblioteca e mostrar como utilizá-la.
Por que utilizar Flatbuffers para comunicação ?
- Baixo consumo de recursos, não necessita de espaço adicional para acessar os dados serializados;
- Flexível, permite retrocompatibilidade entre versões diferentes dos esquemas de serielização;
- Fácil de usar;
- Fortemente tipada;
- Crossplatform, o compilador FlatC permite permite a utilização de Flatbuffers na maioria das linguagens;
Por onde começar ?
Por onde começar ?
Instalando o transpilador FlatC, responsável por traduzir os schemas das mensagens em código, muitas distribuições linux trazem o pacote flatbuffers e flatbuffers-devel, para outros casos consulte é necessário compilar a partir do código fonte.
Definindo um esquema
Definindo um esquema
Vamos definir um esquema básico de comunicação seguindo a documentação:
No esquema acima temos uma mensagem Base que é composta por uma id, um nome e um dispositivo. Utilizando a declaração union podemos utilizar diferentes dispositivos em um campo da mensagem. Essa union se comporta como uma tupla, tendo como valor na posição 0 o campo oculto None permitindo que a mensagem seja enviada sem um dispositivo.
Agora basta compilar o arquivo .fbs criado utilizando o comando:
E adicionar o arquivo generated.rs ao projeto.
Exemplo:
Resultado:
