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.

Avalie esse artigo

Relevância
Estilo/Redação

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.