2010-09-09 9 views

Respuesta

7

Un poco tenue, pero hay una diferencia sutil. Hay 17 clases concretas en .NET Framework que formatean XML. Estos formateadores están todos ocultos, obtienes una instancia para ellos con un método como XmlWriter.Create(). Lo mismo para DataContractSerializer, el formato real se realiza, por ejemplo, mediante una instancia de XmlDictionaryWriter.

No existe tal direccionamiento indirecto para BinaryFormatter o SoapFormatter, ellos mismos se encargan del formateo. En otras palabras, un formato de formateador, un serializador usa un formateador.

+1

Interesante. ¿Dónde puedo leer sobre las 17 clases que formatean XML? –

+1

No están documentados. Pero puedes verlos con Reflector. –

4

No, son sinónimos. Hacen lo mismo: convierten el objeto CLR en una secuencia de bytes transferible.

+0

Andrey: agradable - corto y dulce ... :) +1 – t0mm13b

1

Las diferencias en los formateadores es fundamental - BinaryFormatter como lo sugiere, los datos están en forma binaria nativa, mientras que SoapFormatter está de moda texto XML, el tiro en las diferentes formas de serialización es en realidad Dependiendo del tipo de formateadores, los datos binarios que usan BinaryFormatter tienden a ser mucho más pequeños y rápidos que los formateadores de jabón.

Es por esa razón, si usted quiere tomar un "volcado de memoria" es mejor utilizar BinaryFormatter y serializar/deserializar de distancia, a costa de datos de interoperabilidad entre diferentes arquitecturas - lo que significa que puede no ser compatible si el intercambio de datos entre diferentes plataformas pero el procesamiento más rápido ...

mientras que con SoapFormatter que está protegido de tales incompatibilidades binarios, ya que es un texto basado en Unicode o ASCII, pero mucho más lento!

+3

Buena respuesta, pero en realidad no es una respuesta a la pregunta ... – Kendrick

+1

@Kendrick - bien ... gracias ... bueno cuando el OP preguntó ' ¿Por qué la diferencia? Pensé que esto sería lo que buscaba el OP en lugar de 'No, son sinónimos' de Andrey, que contradice 'Hacen lo mismo' cuando en realidad la definición de sinónimo es 'Los sinónimos son palabras diferentes con idénticos o muy similares significados '¡no necesariamente lo mismo! :) – t0mm13b

+0

No, Kendrick tiene razón: conozco la diferencia en la funcionalidad. Lo que estoy preguntando es la incoherencia en el nombramiento. Gracias sin embargo. –

Cuestiones relacionadas