Ich bin mit Protokollpuffer als Draht Daten-Format in einer Client-Server-Architektur. Domain-Objekte (Java-Beans) durchlaufen den folgenden Lebenszyklus.
"Protocol Buffers und OO Design" Abschnitt in protobuf Dokumentation empfiehlt Verpackung erzeugte Klasse in der richtigen Domain-Modell .
Ich möchte die beste appoach finden-out.
Für z.B. Ich habe eine einfache Proto-Definition.
%Vor%So ist das Domänenmodell definiert. Wie Sie sehen können, werden die Daten vollständig in proto-Builder-Objekt gespeichert.
%Vor%Ist das eine gute Übung? werden, weil diese Objekte in allen Phasen des Lebenszyklus verwendet, aber wir müssen nur protocolbuf Format bei Übertragungsphase Client-Server.
Gibt es ein Performance-Problem, wenn Proto-Builder-Klasse Getter / Setter-Methoden Zugriff auf speziell wenn Proto Definition komplex und verschachtelt ist?
Ich habe keine Erfahrung mit Protokollpuffern, aber ich würde nicht die Implementierung Ihrer Domänenobjekte empfehlen, die auf ein bestimmtes Serialisierungs- / Übertragungsframework zugeschnitten sind. Sie könnten das in der Zukunft bereuen.
Die Domänenobjekte und die Logik einer Softwareanwendung sollten von bestimmten Implementierungsproblemen (in Ihrem Fall Serialisierung / Übertragung) so unabhängig wie möglich sein, weil Ihre Domäne in Zukunft einfach zu verstehen und wiederverwendbar / wartbar sein soll.
Wenn Sie Ihre Domänenobjekte unabhängig von Serialisierung / Übertragung definieren wollen, haben Sie zwei Möglichkeiten:
Die Nachteile von Option 1 sind, dass Ihre Domäne zweimal definiert ist (was in Bezug auf Änderungen unerwünscht ist) und das Kopieren von Informationen (was fehleranfälligen und nicht wartbaren Code erzeugt).
Die Nachteile von Option 2 sind, dass Sie verlieren Schema-Evolution (obwohl ProtoStuff anscheinend dies unterstützt ) und das vollständige (möglicherweise große) Objektdiagramm wird serialisiert und übertragen. Obwohl Sie das Objektdiagramm (manuell oder mit JGT ) vor der Serialisierung / Übertragung beschneiden können.
Wir haben einen Protobuf-Converter erstellt, um das Problem der Transformation Ihrer Domain-Modell-Objekte in Google Protobuf-Nachrichten zu lösen und umgekehrt.
So verwenden Sie es:
Domänenmodellklassen, die in protobuf-Nachrichten umgewandelt werden müssen, müssen Bedingungen erfüllen:
ZB:
%Vor%Code für die Konvertierung der Benutzerinstanz in eine verwandte Protobuf-Nachricht:
%Vor%Code für die Rückwärtskonvertierung:
%Vor%Die Konvertierung von Listen von Objekten ähnelt der Konvertierung einzelner Objekte.
Tags und Links oop protocol-buffers