Pregunta

Tengo un gran conjunto de archivos XML de un esquema propio: los archivos XML definen el protocolo de comunicación binario (estructura de mensajes).

Me gustaría aprovechar la tecnología de búferes de protocolo de Google.

Estoy usando el código existente para cargar los archivos XML en un modelo de objetos (en la memoria). Me gustaría generar un archivo .proto a partir de ese modelo de objetos.

así que básicamente lo que estoy buscando es código / biblioteca (en C # / .NET) que represente el formato de archivo .proto como un modelo de objeto y pueda guardar ese modelo de objeto en un archivo .proto.

Eché un vistazo a dotnet-protobufs de Jon Skeet, creo que entiendo lo que hace (generar código C # basado en archivos .proto)

Sin embargo, no descubrí si puedo usarlo para mi proyecto (probablemente tenga el modelo de objeto de formato .proto allí, pero probablemente solo el código que pueda analizar este formato y no escribirlo)

¿Fue útil?

Solución

protobuf-net (mi versión de buffers de protocolo en .NET) tiene soporte primitivo para generar archivos proto, pero no sería difícil llenar los espacios en blanco. Me concentré primero en el motor central, luego en la generación de C # de proto. Escribir un xslt para generar un protocolo a partir del modelo de objetos no sería muy diferente. Sin embargo, tomaría unos días ... (tengo un tiempo limitado en este momento).

Si esto fuera útil, hágamelo saber.

Para obtener información, el motor protobuf-net es compatible con la mayoría de las clases XmlSerializer (y DataContractSerializer , y recientemente BinaryFormatter ), así que si su el código actualmente funciona como xml, probablemente podamos hacerlo funcionar en protobuf-net. Sin garantías, por supuesto ...

Otros consejos

Mi código solo puede serializar y deserializar a binario y texto. Sin embargo, creo que el proyecto de Marc Gravell tiene capacidades XML. De hecho, creo que genera un código C # basado en cargar la versión binaria de un archivo .proto (que está codificado como protobuf), escribirlo como XML y luego aplicarle XSLT ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top