Temos serviços web REST que podem servir XML ou JSON (WCF). Estou brincando com a ideia de implementar o Protobufs. Por quê?
PROS
- Menos carga nos servidores.
- Tamanho menor da mensagem - menos tráfego.
- É mais fácil mudar agora ou mais tarde.
CONS
- Precisa ser implementado
- Vai ser mais difícil solucionar problemas / detectar mensagens para depuração.
- Posso ativar o GZip no servidor e o JSON consumirá tanto tráfego
Qual é a sua sugestão e / ou experiência nisso?
web-services
wcf
serialization
Katit
fonte
fonte
Respostas:
O valor comercial da sua implementação excede o custo?
Se você implementar, precisará alterar não apenas o servidor, mas todos os clientes (embora você possa suportar os dois formatos e alterar apenas os clientes conforme necessário). Isso levará tempo e testes, o que é um custo direto. E não subestime o tempo necessário para realmente entender os buffers de protocolo (especialmente os motivos para tornar o campo obrigatório ou opcional) e o tempo necessário para integrar o compilador protobuf ao seu processo de construção.
Então, o valor excede isso? Você se deparou com a opção de "nossos custos de largura de banda representam X% de nossas receitas e não podemos suportar isso"? Ou mesmo "precisamos gastar US $ 20.000 para adicionar servidores para suportar JSON"?
A menos que você tenha uma necessidade comercial premente, seus "profissionais" não são realmente profissionais, apenas otimização prematura.
fonte
mantenho apis e alguém antes de mim adicionou protobuf (porque era "mais rápido"). A única coisa mais rápida é o RTT devido à menor carga útil e isso pode ser corrigido com o JSON compactado com gzip.
A parte que me parece desagradável é o trabalho relativo para manter o protobuf (comparado ao JSON). Eu uso java, então usamos o mapeamento de objetos Jackson para JSON. Adicionar a uma resposta significa adicionar um campo a um POJO. Mas, para o protobuf, tenho que modificar o arquivo .proto e, em seguida, atualizar a lógica de serialização e desserialização que move os dados para dentro / fora dos buffers de protocolo e para os POJOs. Aconteceu mais de uma vez que ocorreu um lançamento em que alguém adicionou um campo e esqueceu de inserir o código de serialização ou desserialização para os buffers de protocolo.
Agora que os clientes implementaram os buffers de protocolo, é quase impossível se afastar.
Você provavelmente pode adivinhar, meu conselho é não fazê-lo.
fonte