Wir führen Protokollpuffer als neuen Transport für einige Back-End-RPC-Dienste ein. Da es Widerstände gibt, Daten zwischen verschiedenen Formen ähnlicher Objekte manuell hin- und herzuschieben, kann ich vorhersagen, dass die Protokollpufferinstanzen den Stapel etwas höher als nur an die RPC-Serverschnittstelle weitergegeben werden.Protokollpuffer als allgemeines Datenobjekt verwenden?
Ist das etwas, was ich vermeiden sollte? Ist es sicher, ein Protokoll-Puffer-Objekt wie einen reinen Datenbehälter zu behandeln, mit der netten Annehmlichkeit, dass es schnell und effizient in binäre Daten umgewandelt werden kann?
Der andere Grund, ich sehe es als eine nette Möglichkeit zum Generieren von Datenobjekten ist, dass die erforderlichen/optionalen Felder und die automatisch generierte Builder-Schnittstelle.
Ich denke, die Tatsache, dass sie unveränderlich sind, hilft tatsächlich, nicht weh, wenn es darum geht, Protokollpuffer wie diese zu verwenden. Sie sind unveränderliche Wertobjekte wie String. –
Es hilft sicherlich in einigen Fällen, wenn Sie Code in einem funktionalen Stil schreiben können. Es hängt teilweise vom Problem und teilweise von den Entwicklern ab :) –
Unveränderlich hilft in manchen Fällen, aus unbekannten Gründen gibt es einige öffentliche Konstruktionen mit einem Dutzend + oder so Parametern, die alle endgültigen Feldern zugeordnet sind. Ein Baumeister ist großartig, aber langweilig und Standard, um jedes Mal zu schreiben. Es ist auch schwierig, die Logik von erforderlichem und optionalem Recht zu erhalten, so dass die build() -Methode in die Luft geht, wenn erforderliche Felder weggelassen wurden. –