Usando protobuf para estruturas internas

42 views
Skip to first unread message

Rodrigo Strauss

unread,
Jan 23, 2012, 8:44:18 AM1/23/12
to ccppbrasil
Estou usando protobuf e já estou ficando de saco cheio de copiar
campos de estruturas protobuf para minhas estruturas internas. E na
maioria das vezes as estrutura são espelhadas. Fora o trabalho de
sincronizar os enums.

Estou considerando definir minhas estruturas internas em protobuf e
usá-las assim mesmo, mesmo na parte do código que não lida com RPC. Eu
sei que quando minhas informações internas crescerem além da interface
pública de RPC terei que encapsular:

struct MyInfo
{
MyProtoBufType myPublicInfoThatGoesViaRpc;
MyInternalType thisOneDoesntGoViaRpc;
};

Eu sei que misturar RPC e estruturas internas pode ser "sujinho", mas
toneladas de código boilerplate além de pouco legível pode esconder
bugs.

Qual a experiência de vocês com isso e o que me sugerem?

Rodrigo Strauss
http://www.1bit.com.br
@rodrigostrauss

E. Tadeu

unread,
Jan 23, 2012, 9:01:05 AM1/23/12
to ccppb...@googlegroups.com
Se não for muito complexo fazer uma geração de código para o código "boilerplate", eu sugiro isso! ;)

  Abraços!

2012/1/23 Rodrigo Strauss <rod...@1bit.com.br>
--
Antes de enviar um e-mail para o grupo leia:
                    http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
             para Eventos do Grupo C & C++ Brasil:
                       http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira:  vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en

Reuben Morais

unread,
Jan 23, 2012, 9:07:37 AM1/23/12
to ccppb...@googlegroups.com
Já usei protobufs em dois projetos, e em ambos os protobufs eram
usados exclusivamente como tipos internos.
Na verdade eu sempre achei que esse era O Jeito Certo™ – até onde
lembro a documentação sugere isso.

-- reuben

Bruno Herrera

unread,
Jan 23, 2012, 10:51:02 AM1/23/12
to ccppb...@googlegroups.com
Tenho um pouco de experiencia com Thrift e o que tem parecido mais simples é definir a estrutura interna na interface sempre que algum campo precisar ser serializado.

Isso evita conversoes de enum e bolierplates em toda parte. E qndo vc quer adicionar um campo uma enumeração muda apenas na IDL nao correndo o risco de ficar com enumeracoes diferentes, etc...



2012/1/23 Reuben Morais <reuben...@gmail.com>

Rodrigo Strauss

unread,
Jan 23, 2012, 2:11:23 PM1/23/12
to ccppb...@googlegroups.com
Eu faço isso caso a caso com regex dentro do Notepad++...

Rodrigo Strauss
http://www.1bit.com.br
@rodrigostrauss

2012/1/23 E. Tadeu <e.t...@gmail.com>:

Gianni

unread,
Jan 23, 2012, 2:53:16 PM1/23/12
to ccppb...@googlegroups.com
Muito tempo atrás, num projeto RPC que não usava ProtoBuf mas tinha um esquema
parecido, meu problema era muito mais preocupação com sincronização do que
encheção de saco (se bem que é quase a mesma coisa).

Eu fiz o meu próprio parser p/ o IDL que eu usava, que criava classes 'do meu
jeito', mas tinha um contrutor que recebia as classes do jeito que o RPC
gerava... e eu fiquei um tempão falando que ia escrever o get/setXXX() e o
operator= e ==, mas nunca fiz....

Enfim, foi assim que resolvi: criei meu programinha gerador de classes com
construtores que recebiam RPC, e usava elas de bases p/ as classes que eu
escrevia com meus campos não-RPC.

Reply all
Reply to author
Forward
0 new messages