2010-09-09 8 views

Antwort

7

Ein bisschen dünn, aber es gibt einen feinen Unterschied. Im .NET-Framework gibt es 17 konkrete Klassen, die XML formatieren. Diese Formatierer sind alle versteckt, Sie erhalten eine Instanz mit einer Methode wie XmlWriter.Create(). Dasselbe gilt für DataContractSerializer. Die eigentliche Formatierung erfolgt beispielsweise durch eine XmlDictionaryWriter-Instanz.

Keine solche Indirektion für BinaryFormatter oder SoapFormatter, sie kümmern sich um die Formatierung selbst. Mit anderen Worten, ein Formatter-Format verwendet ein Serializer einen Formatierer.

+1

Interessant. Wo kann ich über die 17 Klassen lesen, die XML formatieren? –

+1

Sie sind nicht dokumentiert. Aber Sie können sie mit Reflector sehen. –

4

Nein, sie sind Synonyme. Sie machen das gleiche: Konvertieren CLR-Objekt in übertragbare Sequenz von Bytes.

+0

Andrey: schön - kurz und süß ... :) +1 – t0mm13b

1

Die Unterschiede in den Formatierer ist entscheidend - eigentlich BinaryFormatter wie es schon sagt, sind die Daten im nativen binär, während SoapFormatter in XML-Text Mode ist, in die verschiedenen Möglichkeiten, werfen von Serialisierung ist abhängig von der Art der Formatierer sind binäre Daten mit BinaryFormatter viel kleiner und schneller als Soap-Formatierer.

Es ist aus diesem Grund, wenn Sie einen „Speicherabbild“ nehmen wollen es besser ist, BinaryFormatter zu verwenden und serialisiert/deserialisiert, weg auf Kosten der Dateninteroperabilität zwischen verschiedenen Architekturen - Was bedeutet es nicht kompatibel sein können wenn Daten zwischen verschiedenen Plattformen ausgetauscht werden ABER schnellere Verarbeitung ...

Während mit SoapFormatter es vor solchen binären Inkompatibilitäten geschützt ist, wie es Text basierend auf entweder Unicode oder ASCII ist, aber viel langsamer!

+3

Gute Antwort, aber nicht wirklich eine Antwort auf die Frage ... – Kendrick

+1

@Kendrick - ok ... danke ... nun, als das OP fragte ' Warum der Unterschied? Ich dachte, dies wäre das, was der OP sucht, anstatt "Nein, das sind Synonyme" von Andrey, was widerspricht "Sie machen das gleiche", wenn wirklich die Definition von Synonym ist. Synonyme sind verschiedene Wörter mit identisch oder sehr ähnlich Bedeutungen 'nicht unbedingt gleich! :) – t0mm13b

+0

Nein, Kendrick ist richtig - ich kenne den Unterschied in der Funktionalität. Ich frage nach der Inkonsistenz in der Benennung. Trotzdem danke. –

Verwandte Themen