¿Estás seguro de que deseas utilizar ProtoBuf? Puede usar Json al principio, y luego cambiar a Bson o MessagePack como un formato binario.
La combinación Json/Bson tiene la ventaja de que puede usar la misma biblioteca (Json.net) para ellos. Creo que Bson es un poco más grande que ProtoBuf sin embargo.
O puede usar Json/MessagePack. Técnicamente, MessagePack es un mejor formato binario que Bson/ProtoBuf IMO. Pero el soporte de herramientas es peor, y necesitará una biblioteca separada para Json y MessagePack. Es compatible con todo lo que Json hace y más (en particular, puede utilizar tanto cadenas como enteros en los diccionarios).
Comparativa rápida de MsgPack y protobuf:
- resultante tamaño de los datos si se utilizan construcciones similares parece ser comparable.
- El rendimiento de codificación/decodificación depende en gran medida de la implementación, pero espero que tenga una magnitud similar
- MsgPack es más autodescriptivo. . En ProtoBuf, ni siquiera ves si algo es un submensaje o un blob.
- MsgPack admite claves no enteros en un diccionario. Una cosa que esto permite es almacenar propiedades por nombre cuando no te importa el tamaño y cambiar a enteros donde las ganancias son grandes.
- MsgPack almacena el recuento de elementos en lugar del tamaño de matrices/diccionarios. Esto tiene la ventaja de que no es necesario regresar a la salida y adaptarse al tamaño todo el tiempo, lo que hace que escribir un serializador sea más fácil y, posiblemente, proporcione una velocidad de escritura más rápida. Por otro lado, no puede omitir fácilmente un elemento porque no conoce su tamaño.
- MsgPack admite naturalmente un superconjunto de Json, por lo que puede migrar fácilmente desde Json.
- El soporte de herramientas, la documentación y la popularidad son mucho mejores con ProtoBuf. En particular, ProtoBuf.net se ve mejor que el código C# disponible para MsgPack.
Gracias! Esto servirá, ya que es temporal. No necesito portabilidad ni compatibilidad a largo plazo en este punto, y escribiré un editor más adelante si es necesario. – Gnurfos