2010-03-24 4 views
71

Mon application de bureau sérialise les objets en utilisant XmlSerializer. On m'a suggéré de tirer parti de DataContractSerializer à la place. Dans quels scénarios devrais-je utiliser DataContractSerializer?DataContractSerializer vs XmlSerializer: Avantages et inconvénients de chaque sérialiseur

Un grand merci

Commentaires.
1. Le fichier XML de sortie est stocké localement. Aucune autre application ne désérialise les objets de ce fichier XML.
2. Mon application fonctionne avec .NET Framework 3.5 SP1.

+0

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

Répondre

93

Dan Rigsby a le poste ultime à ce sujet - allez le lire!

XmlSerializer vs. DataContractSerializer (web archive)

Il dit tout ce qu'il ya à dire, et d'une façon très convaincante.

En bref:

XmlSerializer:

  • a été autour depuis longtemps
  • est "opt-out"; public tout se sérialisé, à moins que vous lui dites pas ([XmlIgnore])

DataContractSerializer est:

  • le petit nouveau en ville
  • optimisé pour la vitesse (environ 10% plus rapide que XmlSerializer, en général)
  • « opt-in » - uniquement des choses que vous marquez spécifiquement comme [DataMember] sera sérialisé
  • mais marqué quelque chose avec [DataMember] sera sérialisé - que ce soit public ou private
  • ne supporte pas les attributs XML (pour des raisons de vitesse)
+1

Attendez, pouvez-vous élaborer sur ce dernier point? –

+2

@ Paul-SebastianManole: le DataContractSerializer ne supporte pas les attributs XML - pour des raisons de vitesse. Que faut-il élaborer? –

+0

Eh bien, je suis nouveau à .NET. J'étais sur le point de continuer à utiliser XmlSerializer depuis que j'ai trouvé quelques tutoriels en ligne. Mais alors j'ai trouvé DataContractSerializer sur MSDN qui semble être lié à WCF. Ce que je veux faire est de désérialiser un XML dans un objet simple qui me permettrait d'accéder à un élément XML et ses attributs car je veux sérialiser ces objets plus tard, de nouveau dans un document XML, après avoir calculé certaines valeurs pour les attributs. –

Questions connexes