Estoy confundido: ¿cuándo debería usar Serialización XML y cuándo debería estar utilizando la Serialización Binaria en .NET Framework?¿Cuándo debo usar la serialización XML frente a la serialización binaria en .NET Framework?
Respuesta
Específico para .NET, si tiene dos aplicaciones que usan el mismo sistema de tipo, entonces puede usar la serialización binaria. Por otro lado, si tiene aplicaciones que se encuentran en plataformas diferentes, se recomienda utilizar la serialización XML. Entonces, si estoy escribiendo una aplicación de chat (cliente y servidor), podría usar la serialización binaria, pero si luego decido que debo usar Python para escribir un cliente, es posible que no.
Si incluye el serializador de contrato de datos cuando dice "serialización xml", entonces estoy de acuerdo con usted. –
Muchas gracias por la respuesta – Mahantesh
@Mahantesh @Adel - "binario" no es el problema aquí; ** No es cierto ** que el binario no es interoperable, simplemente: 'BinaryFormatter' (un * ejemplo específico * de un serializador binario) es una mala elección. Hay varios otros. –
Si desea una salida fácil de usar o multiplataforma, utilice XML. Además, la serialización XML usa campos públicos y propiedades para serializar y puede cambiar/formatear la salida mediante el uso de atributos y serialización personalizada en el nivel de clase si lo desea. Bin.Ser. usa campos privados para serializar.
suspiro; oh los viejos mitos ... Para contradecir * ambos * puntos; mientras que 'BinaryFormatter' es de hecho un serializador de campo, ** no ** es el único serializador binario, la mayoría se comportan mejor, y' DataContractSerializer' escribe xml, y * a menos que el tipo esté anotado correctamente * actúa como un * campo * serializador. –
DataContractSerializer, WCF? En esta pregunta, ni una palabra sobre eso. – SeeSharp
mi referencia es "serialización xml", que no es lo mismo que 'XmlSerializer'. "serialización xml" es simplemente una categorización; 'XmlSerializer' es un ejemplo específico de una API para" serialización xml ". 'DataContractSerializer ** ** también ** realiza" serialización xml ". –
Ambas respuestas existentes se centran en "plataforma cruzada", pero ese es un problema no relacionado. El punto que están haciendo allí es "no use BinaryFormatter
si está haciendo multiplataforma", lo cual es totalmente compatible. Sin embargo, hay una gama de formatos de serialización binarios que son muy multiplataforma, siendo protobuf/ASN.1 los mejores ejemplos.
Por lo tanto, veamos lo que cada uno tiene para ofrecer;
- binario es típicamente más pequeños, por lo general más rápido con el proceso (en ambos extremos), y no editables
- formatos fácilmente legibles por el hombre/Texto (XML/JSON) tienden a ser más detallado de lo binario (aunque a menudo se comprime bien), pero es bastante fácil trabajar con la mano; pero todo lo que el procesamiento de texto una asignación tiende a hacerlos más lenta
- xml es muy común es la de servicios web, y se beneficia de gooling apoyo tales como XSD, XSLT y XML robusta editores
- JSON es el principal actor en el navegador comunicaciones basadas en (a pesar de que también se utiliza en servicios web) - tiende a ser menos formal, pero sigue siendo muy eficaz
Note como la interoperabilidad no es ni una fuerza ni la debilidad de cualquiera, siempre y cuando usted elige un formato binario apropiado!
Here's an answer que compara el tiempo de serialización, la deserialización y las métricas espaciales de la mayoría de los serializadores .NET, para su referencia.
Un poco curioso, ¿cómo encuentras tus viejas respuestas? Hoy traté de localizar una de mis respuestas recientes a alguna pregunta relacionada y me costó encontrarla. –
@ H.B. generalmente a través de google, [por ejemplo] (http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=%2B%22ok+i'll+bite%22+%2Bgravell+site:stackoverflow.com) –
- 1. ¿Qué datos se pasan en la serialización? (Serialización binaria)
- 2. XML frente a rendimiento binario para serialización/deserialización
- 3. Ignorar la serialización binaria en una propiedad
- 4. NET serialización XML y la herencia
- 5. ¿Por qué la serialización binaria es más rápida que la serialización xml?
- 6. protobuf-net ¿NO es más rápido que la serialización binaria?
- 7. serialización binaria/deserialización en C++ y C#
- 8. Serialización casera frente a Java
- 9. serialización XML de la lista
- 10. .Net Serialización XML basada en un XSD?
- 11. serialización XML de enumeraciones
- 12. atributos obligatorios en la serialización XML
- 13. Estabilidad de la serialización .NET en diferentes versiones de framework
- 14. Biblioteca de serialización binaria Scala
- 15. Xml Serialización en C#
- 16. C# Serialización binaria de objetos
- 17. Escenarios donde la serialización Xml falla en .NET
- 18. Serialización XML en C#
- 19. Optimización de la serialización binaria para matrices genéricas multidimensionales
- 20. serialización XML y codificación
- 21. Referencia circular al usar serialización XML?
- 22. Uso de StringWriter para la serialización XML
- 23. Cómo utilizar la serialización XML predeterminada desde los métodos de serialización XML personalizados
- 24. Xml Serialización sin eliminación
- 25. Reemplazo para Serialización XML
- 26. Cómo funciona la serialización en .Net
- 27. Inmutabilidad y serialización XML
- 28. serialización XML, codificación
- 29. Xml Serialización de ReadOnlyCollections
- 30. xmlns = vacías "" después de la serialización XML
¿Usa serialización binaria cuando quiere un archivo binario? ¿Dónde está la confusión? –
¿Solo quieres? o cualquier circunstancia ¿Debería? –