Pergunta

Eu tenho um grande conjunto de arquivos XML de um esquema propriatary -Os arquivos XML definem protocolo de comunicação (estrutura da mensagem) binário.

Eu gostaria de aproveitar a tecnologia buffers de protocolo do Google.

Eu estou usando o código existente para carregar os arquivos XML em um modelo de objeto (em memória). Eu gostaria de gerar um arquivo .proto daquele modelo de objeto.

Então, basicamente o que eu estou procurando é um código / biblioteca (em C # /. NET), que representa o formato de arquivo .proto como um modelo de objeto e pode salvar o modelo de objeto em um arquivo .proto.

Eu dei uma olhada no dotnet-protobufs de Jon Skeet, eu acho que entendo o que ele faz (gerar código C # com base em arquivos .proto)

No entanto, eu não descobrir se eu posso usá-lo para o meu projeto (que provavelmente tem o modelo de objeto formato .proto lá, mas provavelmente só código que pode analisar este formato e não escrevê-lo)

Foi útil?

Solução

protobuf-net (minha versão do protocolo buffers na NET) possui primitivo suporte para geração de arquivos proto, mas não seria difícil de preencher os espaços em branco. I concentrada no motor núcleo em primeiro lugar, então a geração de C # a partir de proto. Escrever um XSLT para gerar um proto do modelo de objeto não seria muito diferente. Levaria alguns dias embora ... (eu tenho tempo limitado no momento).

Se isto seria útil, por favor me avise.

Para informações, o motor protobuf-net é compatível com a maioria das classes XmlSerializer (e DataContractSerializer, e recentemente BinaryFormatter) - por isso, se o seu código atualmente trabalha como xml, podemos provavelmente fazê-lo funcionar em protobuf-net. Não há garantias, é claro ...

Outras dicas

Meu código só pode serializar e desserializar para binário e de texto. No entanto, acredito projecto Marc Gravell tem capacidades de XML. Na verdade, eu acredito que ele gera código C # baseado em carregar a versão binária de um arquivo .proto (que é em si codificado como um protobuf), escrevendo-lo como XML, e em seguida, aplicar XSLT a ele ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top