Ich schreibe eine Windows-Dienstanwendung, die XML-Dokumente während der Ausführung wiederholt serialisieren und deserialisieren muss. Da ich generische Typen serialisieren und deserialisieren muss, die während der Kompilierungszeit nicht bekannt sind (ich weiß nicht a priori, wie viele Typen ich serialisieren/deserialisieren muss), würde ich gerne wissen, ob es eine gute Idee ist, einen Cache zu behalten von DataContractSerializer-Objekten, die ich zum Serialisieren und Deserialisieren der Objekte instanziiere.Ist es eine gute Idee, DataContractSerializer-Instanzen zwischenzuspeichern?
Ich stelle diese Frage, weil ich weiß, dass es eine gute Idee ist, die XmlSerializer-Klasseninstanzen zwischenzuspeichern, da sie eine dynamische Assembly im Speicher unter der Haube erstellen und die im Speicher dynamisch erstellten Assemblies keine Garbage Collection sind.
Ich habe gelesen, dass der DataContractSerializer auf leichte Code-Generierung angewiesen ist, aber ich bin nicht mit den Details davon üblich. Deshalb stelle ich diese Frage, ich muss verstehen, wenn ich DataContractSerializer-Instanzen nach Bedarf instanziiere, würde es mich zu einem Speicherverlust führen, wie der XmlSerializer würde?
Ich habe gewählt, den DataContractSerializer anstelle des XmlSerializer zu verwenden, um interne Eigenschaften serialisieren zu können.
(auf Kommentar geantwortet) –