2008-12-27 11 views

Respuesta

15

No.

Depende en gran medida de qué tipo de datos se encuentren dentro del documento XML en sí. Si tiene muchos datos estructurados, la sobrecarga para XML será grande. Por ejemplo, si los datos se parece a:

<person> 
    <name>Dave</dave> 
    <ssn>000-00-0000</ssn> 
    <email1>xxxxxx/email1> 
</person> 
... 

Vas a tener mucha más sobrecarga que si usted tiene un documento XML que se parece a:

<book name="bible"> 
In the beginning God created the heavens and the earth. 
Now the earth was formless and empty ... 
And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus. 
</book> 

así que no es realmente una buena pregunta. Depende en gran medida de los datos que USTED desee enviar, y de cómo/si lo está comprimiendo.

0

Sólo señalando el rendimiento no es la única métrica es posible que desee ver.

  • Facilidad de construcción. ¿Tiene varios días/semanas para crear una rutina de serializador/deserializador y probarla exhaustivamente o podría dedicar mejor ese tiempo a las funciones?
  • Facilidad para consumir los datos. ¿Puede un cliente utilizar un analizador de código abierto preconstruido o necesita implementar un montón de códigos (potencialmente con errores)?
  • Facilidad de depuración. ¿Ser capaz de ver los datos en tránsito ayuda a depurar? Entonces, un formato binario tenderá a ofuscar cualquier problema.
  • ¿Cuál es el costo de mantenimiento de cada método?

En lo personal, me gustaría utilizar un estándar XML publicado y bibliotecas de análisis de código abierto hasta que un cuello de botella es demostrado por las pruebas reales.

+0

Como esto es C#, ya hay XML y serializadores binarios que el OP podría usar y que están totalmente probados y funcionan. –

5

La mayor diferencia entre la serialización de BinaryFormatter y xml es la portabilidad; BinaryFormatter es difícil de garantizar entre versiones, por lo que solo es realmente adecuado para almacenamiento o transferencia a corto plazo.

Sin embargo, se puede obtener lo mejor de ambos, y tenerlo más pequeña y tienen que es más rápido, mediante el uso de serialización binaria a medida - y que ni siquiera tiene que hacerlo usted mismo ;-P

protobuf-net es una implementación .NET de las especificaciones de serialización binaria de los buffers de protocolo de Google; es más pequeño que XmlSerializer o BinaryFormatter, totalmente portátil (no solo entre versiones: puede cargar un flujo de pb en, por ejemplo, java, etc.), extensible y rápido. También se prueba de manera bastante exhaustiva, con una cantidad considerable de usuarios.

un desglose completo de tamaño y velocidad, que cubre XmlSerializer, BinaryFormatter, DataContractSerializer y protobuf-Net es here.

Cuestiones relacionadas