Protocol Buffers Einführung neue Go-API und Unterstützung für ältere Versionen auf unbestimmte Zeit

Go Team kündigte die Einführung von  Protocol Buffers  neue Go - API (APIv2), und dass dies eine erhebliche Revision. APIv2 wichtigsten Anbieter von Reflexion (Spiegelung) Funktion, durch die der Entwickler in der Lage ist numerische Protocol Buffers Typ - System zu erfassen, sondern auch wegen der Änderung der offiziellen Nachrichtentypdefinitionen und ist daher nicht kompatibel mit der alten und neuen Version der API.

Protocol Buffers ist Google sprachunabhängige Datenaustauschformat, die Sequenz des Erweiterungsmechanismus entwickelt wird, um Daten strukturiert und XML ist ähnlich, aber kleiner und einfacher.

Der Bau der neuen API-Motivation

Go erste Protocol Buffers Paket freigegeben wurde 10 Jahre , in diesem Jahrzehnt, dieses Paket zusammen mit dem Auf- und Ausbau von Go, seine Nutzer Nachfrage hat zugenommen. Go offiziell erwähnt , dass viele Entwickler schreiben wollen mithilfe von Reflektion (Reflection) Programm der Protokollpuffer (Protokollpuffer) Nachricht überprüfen, aber reflectnur das Paket reflektiert wird, kann die Art und den Wert der Go erkennt, ignoriert das System die Vereinbarung vom Puffertyp die Informationen. Zum Beispiel könnten wir ein Spiel durch Protokolleinträge und entfernen Sie alle Kommentare für das Feld mit sensiblen Daten Funktion schreiben, ist aber nicht Teil des Kommentarfeld Go Typ - System, so dass der Betrieb zu viel Mühe.

Darüber hinaus können Entwickler Datenstrukturen andere als die Struktur der Protokolldaten durch den Compiler erzeugt Puffer, der zum Beispiel darstellen kann, ist der Nachrichtentyp zum Compile-Zeit - Typ - Feeds nicht bekannt. Schließlich proto.Messageist es auch eine gemeinsame Quelle des Problems.

Der Beamte sagte , dass diese drei Fragen sind eine häufige Ursache, gibt es auch eine gemeinsame Lösung: MessageDie Schnittstelle sollte vollständig das Verhalten der Meldung angeben sein, und MessageFunktion Betriebswert sollte jede Art korrekt implementieren , um die Schnittstelle zu übernehmen frei sein.

Da Messagekann man nicht die bestehende Definition der Art von Paket ändern, während API kompatibel beibehalten, so die offizielle Entscheidung , einen neuen Protocol Buffers Modul zu starten, und die neue Version nicht kompatibel mit älteren Versionen ist.

Reflection (Reflexion) ist die neue Version der Flaggschiff - Funktion, die ähnlich bietet reflectFunktionalität und Wert der Reflexionstyp - Paket Erkennung von Go. Protocol Buffers Fähigkeit der Reflexionsfunktion entsprechend der Art von Protokoll - Puffer, die Möglichkeit bietet , den Wert des Systems zu erfassen, wobei die Verpackung einen Deskriptor Typ enthält, beschreibt das Quelldokument , das die Struktur und den Typ des Wertes in der Schnittstelle definiert, die Nachrichten Betrieb und Prüfung liefert .

Die offizielle Version der Original-Go Protocol Buffers genannt APIv1, und die neue Version namens APIv2, aufgrund der Inkompatibilität APIv1 und APIv2, so einen anderen Pfad für jede Modul Version verwenden. Die offizielle darauf hingewiesen, weil jeder Entwickler auf neue Versionen von unterschiedlichen Geschwindigkeiten zu migrieren, und einige Programme können weiterhin die alte Version verwenden, selbst innerhalb des gleichen Programms gibt es verschiedene Versionen können die API verwenden, und beabsichtigt daher, die offiziellen auf unbestimmte Zeit zu präsentieren API unterstützen v1.

Ich denke du magst

Origin www.oschina.net/news/113960/a-new-go-api-for-protocol-buffers
Empfohlen
Rangfolge