BT

BERT como uma Alternativa Dinâmica para Protocol Buffers/Thrift

por Werner Schuster , traduzido por Rony Barbosa em 09 Nov 2009 |

Apesar do notável uso de XML para codificação de dados, existem muitas situações em que a sua ineficiência é um problema, tanto à ineficiência de codificação/decodificação quanto a do espaço utilizado. Exemplos de formatos populares de serialização binários que são amplamente utilizados: ASN.1, Google's ProtocolBuffers ou Facebook Thrift.

Agora temos um novo formato:powers GitHub's backend: BERT, criado pelo Tom Preston-Werner baseia-se no Erlangs External Term Format (ETF) que é usado para codificar termos Erlang para comunicação entre nós.

BERT extende ETF com tipos de dados complexos como dicionários, data e expressões regulares.

BERT é diferente do ASN.1 ou dos ProtocolBuffers por não requerer um especificação de um schema ou IDL para formatos.Tom Preston-Werner explica que isto faz de BERT uma espécie de versão binária da idéia por trás do JSON:

Eu gosto de JSON. Eu amo o conceito de extrair um subconjunto de uma linguagem e usando isso para facilitar a comunicação entre processos. Isso me fez pensar sobre o trabalho que eu tinha feito com Erlectricity. Cerca de dois anos atrás eu escrevi uma extensão de C para Erlectricity para acelerar o desserialização do formato de termo externo do Erlang.
[..] E se eu extraisse as partes genéricas do formato de termo externo do Erlang e fazer isso em um padrão para comunicação entre processos? E se Erlang tivesse o equivalente do JSON JavaScript? E se um protocolo RPC pudesse ser construída em cima daquele formato?Como essas coisas ficariam e quanto simples elas poderiam ser feitas?

BERT-RPC permite to chamadas remotas de codigo hospedados em um server BERT-RPC usando BERTs para codificar os argumentos e retornar valores para as chamadas. Tom menciona algumas features do BERT-RPC:

- Chamadas sincronas e assincronass[..]
- Streaming ("para" e "de")
- Diretivas de Caching

Código Ruby poderá ser feito usando BERT-RPC server tal como Ernie.

Uma especificação para BERT e BERT-RPC existe. Alternativas para implementações em Ruby e Erlang estão disponíveis e também em outras linguagens tal como BERT para Javascript, Python, entre outras.

Você prefere uma abordagem schema-less como BERT ou uma opção baseada em IDL como ASN.1 ou ProtocolBuffers.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT