Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Protocol Buffers Version 3

In diesem Kapitel wird erläutert, wie Sie Protocol Buffers im API-Design verwenden. Zur Vereinfachung der Entwicklungsarbeit und Verbesserung der Laufzeiteffizienz sollten gRPC APIs Protocol Buffers Version 3 (proto3) für die API-Definition verwenden.

Protocol Buffers ist eine einfache sprach- und plattformneutrale Interface Definition Language (IDL), mit der Sie Datenstrukturschemas und Programmierschnittstellen definieren können. Sie unterstützt sowohl binäre als auch Textübertragungsformate und kann mit zahlreichen unterschiedlichen Verbindungsprotokollen auf verschiedenen Plattformen verwendet werden.

Proto3 ist die neueste Version von Protocol Buffers. Sie beinhaltet gegenüber proto2 die folgenden Änderungen:

  • Die Feldpräsenz, die auch als hasField bezeichnet wird, wird bei einfachen Feldern standardmäßig entfernt. Ein nicht festgelegtes einfaches Feld hat einen sprachdefinierten Standardwert.
    • Das Vorhandensein eines Nachrichtenfelds ist weiterhin verfügbar, das mit der vom Compiler generierten hasField-Methode getestet oder mit null oder dem von der Implementierung definierten Sentinel-Wert verglichen werden kann.
    • Ab protobuf-Version 3.14 können einfache Felder zwischen dem Standardwert unterscheiden und das Schlüsselwort optional verwenden. Dies wird jedoch im Allgemeinen nicht empfohlen.
  • Der benutzerdefinierte Standardwert für Felder ist nicht mehr verfügbar.
  • ENUM-Definitionen müssen mit dem ENUM-Wert null beginnen.
  • Erforderliche Felder sind nicht mehr verfügbar.
  • Erweiterungen sind nicht mehr verfügbar. Verwenden Sie stattdessen google.protobuf.Any.
    • Aus Gründen der Abwärts- und Laufzeitkompatibilität wird für google/protobuf/descriptor.proto eine spezielle Ausnahme gewährt.
  • Die Gruppensyntax wurde entfernt.

Diese Funktionen wurden entfernt, um API-Designs einfacher, stabiler und leistungsfähiger zu gestalten. Es ist beispielsweise oft erforderlich, bestimmte Felder vor dem Logging einer Nachricht zu filtern, um vertrauliche Informationen zu entfernen. Dies wäre nicht möglich, wenn die Felder erforderlich wären.

Weitere Informationen erhalten Sie unter Protocol Buffers.