Frage

Ich schreibe eine Windows-Dienst-Anwendung, die XML-Dokumente zur Serialisierung benötigt und deserialisieren wiederholt während seiner Ausführung. Wie ich generische Typen serialisiert und deserialisiert muß, die nicht während der Kompilierung bekannt ist (ich weiß nicht, a priori, wie viele Arten Ich muß serialisiert / deserialisieren) Ich würde gerne wissen, ob es eine gute Idee ist, einen Cache halten tun von DataContractSerializer Objekten instanziiert ich für die Serialisierung und Deserialisierung der Objekte aus.

Ich frage diese Frage, weil ich weiß, es ist eine gute Idee, die XmlSerializer-Klasse Instanzen gecached werden, da sie eine dynamische Assembly im Speicher unter der Haube und die Baugruppen dynamisch erstellt im Speicher erstellen, sind nicht Müll gesammelt.

las ich, dass die DataContractSerializer auf leichte Codegenerierung beruhen, aber ich bin nicht mit den Details der es üblich. Deshalb habe ich diese Frage bin gefragt, muss ich verstehen, wenn ich DataContractSerializer Instanzen instanziiert wie nötig es mich zu einem Speicherleck als XmlSerializer führen würde?

Ich habe wählte die DataContractSerializer anstelle des XmlSerializer zu verwenden für interne Eigenschaften serialisiert werden zu können.

War es hilfreich?

Lösung

  

... es ist eine gute Idee, die XmlSerializer-Klasse Instanzen gecached werden, da sie eine dynamische Assembly im Speicher unter der Haube ...

erstellen

Mit XmlSerializer, es hängt wirklich ab, ob Sie verwenden, um die einfach Konstruktor (new XmlSerializer(typeToHandle)) oder die komplexeren Konstruktoren, die es Ihnen ermöglichen, alle Attribute usw. zur Laufzeit angeben. Wenn Sie nur den einfachen Konstruktor verwenden Sie es erneut verwendet den Hintergrund Montage, so dass es keine Wiederholung Strafe.

Ich würde erwartet (aber nicht getestet) DataContractSerializer ähnlich zu arbeiten; aber es ist sicherlich nicht schaden, einfach das Caching, vielleicht in einem statischen Nur-Lese-Bereich

Beachten Sie, dass DataContractSerializer die XML-Layout beschränkt Sie zur Verfügung haben ... solange Sie mit diesem ;-p sind OK

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top