Frage

Gibt es gute vorhandene C ++ Serialisierung Bibliotheken, die Teil-Serialisierung unterstützen?

Mit dem „partial Serialisierung“ Ich meine, dass ich die Werte von 3 Mitgliedern speichern möchte, und später sein kann, dass gespeicherte Kopie auf eine andere Instanz anzuwenden. Ich würde nur die drei Mitglieder aktualisieren und die andere intakt lassen.

Dies wäre nützlich für die Daten über ein Netzwerk zu synchronisieren. Sagen wir, ich habe einige Objekt auf einem Client und einem Server, und wenn ein Mitglied Änderungen auf dem Server Ich möchte der Client eine Nachricht senden, um den aktualisierten Wert für das Element mit und das Mitglied nur . Ich möchte nicht, eine Kopie des gesamten Objekts über den Draht senden.

boost::serialization auf einen Blick sieht aus wie es nur alles oder nichts unterstützt.

Edit: 3 Jahre nach der diese ursprünglich Schreiben sehe ich es zurück und sage mir: ‚wut?‘ boost :: Serialisierung können Sie festlegen, welche Elemente Sie gespeichert werden sollen oder nicht, so wäre es ‚teilweise Serialisierung‘ unterstützen, wie ich scheine es beschrieben zu haben. Da ferner C ++ Reflexionsbibliotheken Serialisierung fehlt benötigen Sie explizit jedes Mitglied angeben, um Sie Speicher sowieso, wenn sie nicht mit irgendeiner Art von externen Werkzeugen kommen die Quelldateien zu analysieren, oder haben ein separates Eingang Dateiformat, das verwendet wird, C ++ Code zu generieren (zB was Protocol Buffers des Fall ist). Ich glaube, ich muss konzeptionell verwirrt gewesen sein, als ich es geschrieben.

War es hilfreich?

Lösung

Sie suchen eindeutig nicht für die Serialisierung hier.

Serialisierung ist über ein Objekt speichern und sie dann aus dem Strom von Bytes neu zu erstellen. Denken Sie Videospiele speichern oder der Sitzungskontext für einen Webserver.

Hier ist, was Sie brauchen, ist Messaging. Googles FlatBuffers so schön ist. Geben Sie eine Nachricht, die jedes einzelne Feld als optional, beim Empfang der Nachricht enthalten wird, aktualisieren Sie Ihr Objekt mit den Feldern, die die anderen unberührt.

existieren und verlassen schön, sowie Text und binäre Codierung (Text ist groß für das Debuggen und binäre, besser zu sein für die reine Leistung), auf der Spitze eines Zero-Cost-Parsing-Schrittes

Die große Sache mit FlatBuffers ist, dass sie vorwärts und rückwärts Kompatibilität behandelt.

Und Sie können sogar die Nachrichten mit einer anderen Sprache (sagt Python oder Ruby) dekodieren, wenn man sie irgendwo speichern und zusammen einen HTML-gui werfen will, es zu kontrollieren!

Andere Tipps

Obwohl ich nicht mit ihnen vertraut bin, können Sie überprüfen auch Google Protocol Buffers .

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