2010-03-24 15 views
71

La mia applicazione desktop serializza gli oggetti utilizzando XmlSerializer. Mi è stato suggerito di sfruttare DataContractSerializer invece.
In quali scenari dovrei usare DataContractSerializer?DataContractSerializer vs XmlSerializer: Pro e contro di ciascun serializzatore

Molte grazie

Commenti.
1. Il file XML di output è memorizzato localmente. Nessun'altra applicazione deserializza oggetti da quel file XML.
2. La mia applicazione viene eseguita con .NET Framework 3.5 SP1.

+0

Vedi anche [DataContract-vs-XMLType] (http://stackoverflow.com/questions/624111/datacontract-vs-xmltype) – nawfal

risposta

93

Dan Rigsby ha l'ultimo post su questo - vai a leggere!

XmlSerializer vs. DataContractSerializer (web archive)

Lui dice tutto quello che c'è da dire, e in modo molto convincente.

In breve:

XmlSerializer:

  • è stato intorno per un lungo periodo di tempo
  • è "opt-out"; tutto pubblico viene serializzato, a meno che non gli si dice di non ([XmlIgnore])

DataContractSerializer è:

  • il nuovo capretto in città
  • ottimizzato per la velocità (circa il 10% più veloce rispetto XmlSerializer, in genere)
  • "opt-in" - solo roba di contrassegnare specificamente come [DataMember] sarà serializzato
  • ma nulla contrassegnati con [DataMember] verrà serializzato - che si tratti di public o private
  • non supporta gli attributi XML (per ragioni di velocità)
+1

Aspetta, puoi approfondire l'ultimo punto? –

+2

@ Paul-SebastianManole: DataContractSerializer non supporta gli attributi XML, per motivi di velocità. Cosa deve elaborare? –

+0

Beh, sono nuovo di .NET. Stavo per usare XmlSerializer da quando ho trovato alcuni tutorial online. Ma poi ho trovato DataContractSerializer su MSDN che sembra essere collegato a WCF. Quello che voglio fare è deserializzare alcuni XML in un oggetto semplice che mi consentirebbe di accedere a un elemento XML e ai suoi attributi perché voglio serializzare quegli oggetti in un secondo momento, di nuovo in un documento XML, dopo aver calcolato alcuni valori per gli attributi. –

Problemi correlati