Ist „google/protobuf/struct.proto“ die optimale Methode zur Übertragung von dynamischem JSON über GRPC?
Hintergrund:
Sie haben einen GRPC-Server und -Client (beide in Go) implementiert und suchen Hilfe dazu Die Verwendung von „golang/protobuf/struct“ ist die effizienteste Strategie zur Bereitstellung dynamischer JSON-Daten.
Lösung:
Basierend auf der bereitgestellten Datei „User.proto“ Die Verwendung von „google.protobuf.Struct“ scheint ein sinnvoller Ansatz zu sein.
Alternative Lösungen:
1. Benutzerdefinierte Protobuf-Strukturen**
Es wurde vorgeschlagen, „Details“ als Struktur innerhalb der Protodatei zu definieren, aber dieser Ansatz erfordert zusätzliche Codegenerierung und -wartung, was umständlich sein kann.
2. JSON-Konvertierung und -Kapselung
Vor der GRPC-Übertragung war es eine weitere Option, die Karte „Details“ in das JSON-Format zu konvertieren, sie als Protobuf-Nachricht zu kapseln und serverseitig zu deserialisieren. Dies erfordert jedoch zusätzliche Verarbeitung und ist weniger effizient als die Verwendung des vorgefertigten Typs „Struct“.
Anujs Lösung:
Diese Lösung ist zwar funktional, aber etwas komplex und umfasst manuelle JSON-Serialisierung und Deserialisierung.
Luke's Lösung:
Diese Alternative ist prägnant, erfordert aber dennoch mehr Transformationen als nötig, da Kartendaten durch mehrere Formate übertragen werden.
Optimaler Ansatz:
Die Lösung, die das in Go eingeführte „structpb“-Paket nutzt, vereinfacht die Erstellung von Protobuf „Struct“-Instanzen aus Standard-Go Karten. Diese Methode bietet die folgenden Vorteile:
Dieser Ansatz stimmt mit dem Beispiel in Ihrer client.go-Datei, in dem eine „Struktur“ mithilfe der Funktion „structpb.NewStruct“ direkt aus einer Karte instanziiert wird.
Das obige ist der detaillierte Inhalt vonIst „google.protobuf.Struct' die effizienteste Möglichkeit, dynamische JSON-Daten über gRPC in Go zu senden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!