Was sind die Best Practices zum Speichern und Verwalten von serialisierten Objekten in C #? Irgendwelche Strategien oder Muster, die zutreffen?
Was ich bisher geglaubt habe, ist Folgendes:
- Bevorzugen Sie Json gegenüber XML, sowohl hinsichtlich des Speicherplatzes als auch der Geschwindigkeit. XML ist jedoch einfacher, Daten über LINQ to XML für größere Datenmengen abzufragen / abzubauen.
- Ordnen Sie für jede einzelne Eigenschaft explizit einem serialisierten Namen zu. Wenn Sie in Zukunft eine Eigenschaft umbenennen müssen, werden Ihre serialisierten Daten nicht beschädigt. Attribute helfen dabei.
- Speichern Sie Versionsinformationen auf dem serialisierten Objekt, falls Sie in Zukunft Daten massenmigrieren müssen
Update: (das habe ich auf die harte Tour herausgefunden)
- Speichern Sie alle Datenzeiten in der gesamten Anwendung und in allen Versionen einheitlich. Sowohl hinsichtlich Format als auch Zeitzone.
c#
patterns-and-practices
serialization
Mihalis Bagos
quelle
quelle
Antworten:
Ich habe im Laufe der Jahre ziemlich viel Serialisierung durchgeführt. Hier sind einige Dinge, die wir uns ausgedacht haben:
Bevorzugen Sie lesbare Formate gegenüber binären Formaten. Im Allgemeinen würde ich Xml Json vorziehen, hauptsächlich weil Sie Xslt verwenden können, um Xml zu transformieren, wenn Sie die Version aktualisieren müssen.
Unabhängig davon, als was Sie serialisieren, sollten die Deserialisierungslogik und der Datenspeicher die Versionierung der serialisierten Daten ermöglichen. Versionsinformationen sollten wahrscheinlich außerhalb der serialisierten Daten liegen, was es etwas einfacher macht, die richtige Deserialisierungsstrategie zu finden und auszuwählen.
Bei Ihrer Serialisierung sollten Komponententests in beide Richtungen ausgeführt werden. IE, Sie sollten einen Test haben, der die Daten deserialisiert und bestätigt, dass Sie alles korrekt importiert bekommen. Und Sie sollten etwas haben, das die Daten serialisiert und bestätigt, dass sie als korrektes json und xml ausgegeben werden.
Wenn der Punkt dieser Serialisierung plattformübergreifend ist, testen Sie gegen die andere Plattform. Wahrscheinlich kein so großes Problem, wie die Plattformen ausgereift sind, aber es gab Zeiten, in denen sich die Dinge nicht darüber einig waren, wie JSON formatiert werden sollte.
quelle
Erwähnte Punkte sind praktisch und gut zu beachten. Ich möchte verschiedene Arten von Serialisierungen erwähnen, die je nach Ihren Anwendungsanforderungen hilfreich sein können.
storage
odersocket-based network
Ströme.Weitere Informationen aus der offiziellen Quelle - MSDN C # -Programmierung
All dies müssen auch Praktiken innerhalb des SDLC-Prozesses sein (dh eine zu testende Umgebung, Versionskontrolle usw.).
quelle