83 votes

DataContractSerializer vs XmlSerializer : Avantages et inconvénients de chaque sérialiseur

Mon application de bureau sérialise les objets en utilisant XmlSerializer . On m'a suggéré de tirer parti DataContractSerializer à la place.
Dans quels cas dois-je utiliser DataContractSerializer ?

Merci beaucoup.

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.

111voto

marc_s Points 321990

Dan Rigsby a écrit le meilleur article sur le sujet - allez le lire !

XmlSerializer vs. DataContractSerializer (archive web)

Il dit tout ce qu'il y a à dire, et de manière très convaincante.

En bref :

XmlSerializer :

  • existe depuis longtemps
  • est "opt-out" ; tout ce qui est public est sérialisé, sauf si vous lui demandez de ne pas le faire ([XmlIgnore]).

DataContractSerializer est :

  • le nouvel enfant en ville
  • optimisé pour la vitesse (environ 10% plus rapide que XmlSerializer, typiquement)
  • "opt-in" - seulement les choses que vous marquez spécifiquement comme [DataMember] sera sérialisé
  • mais tout ce qui est marqué par [DataMember] sera sérialisé - qu'il s'agisse de public o private
  • ne supporte pas les attributs XML (pour des raisons de vitesse)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X