Designproblem



  • Ich bin dabei gerade ein Protokoll zu entwerfen, das auf JSON basiert. Beim Bauen des Parsers stelle ich mir gerade die Frage ob es günstiger ist jede Nachricht einzeln in ein spezielles struct/class zu parsen oder lieber die Nachricht erst einmal in eine generische Struktur zu überführen. Bei letzterem müsste man hinterher immer noch nachsehen ob alle Elemente vorhanden und bei ersterem quasi für jede Nachricht nen eigenen Parser haben. Was haltet ihr für günstiger?



  • Überlade den operator<< für jede Struktur. Dann musst du das nur einmal für die "oberste" Struktur machen, welche das für alle weiteren mit macht.



  • Inwiefern beantwortet das meine Frage? Mein Problem ist nicht die Umsetzung, sondern die Entscheidung für den einen oder anderen Weg.



  • Eine Überführung in eine generische Struktur ist besser. Wir haben hier ein Serialisierungsframework, womit wir mehr oder weniger beliebige Strukturen über die Implementierung von 2 Operatoren Serialisierbar und Deserialisierbar machen können. Da die Operatoren die Strukturen in eine genrische Struktur wandeln und wieder zurück, erschlagen wir damit gleiche mehrere Formate. Momentan können wir Strukturen aus XML oder ini-Dateien deserialisieren und in XML oder Json serialisieren.

    Auf diese Serialisierung setzt dann beispielsweise eine template basierte xmlrpc Implementierung auf (client + server), so dass wir über die Operatoren C++-Strukturen verschicken oder empfangen können. Die selben strukturen können wir aber auch über Ajax über Json einer Webapplikation, die Javascript verwendet zur Verfügung stellen.



  • Wenn du ein generisches Format hast tust du dir bei Änderungen viel viel leichter und die Versionierung ist auch einfacher.



  • Gibt es JSON Parser nicht wie Sand am Meer?



  • Danke, dann ist die Entscheidung gefallen.

    Gibt es JSON Parser nicht wie Sand am Meer?

    Ja, aber ich wollte mal selber nen Parser schreiben (lernen) und hab mir dafür ein nicht zu kompliziertes Format ausgesucht.


Anmelden zum Antworten