Описание тега protocol-buffers

Буферы протокола - это независимый от языка и платформы способ кодирования структурированных данных в эффективный, но расширяемый формат. Google использует буферы протоколов почти для всех своих внутренних протоколов RPC и форматов файлов. Это также кодировка данных по умолчанию, используемая платформой gRPC с открытым исходным кодом.

Буферы протокола - это гибкий, эффективный, автоматизированный механизм для сериализации структурированных данных - подумайте об XML, но меньше, быстрее и проще. Вы определяете, как вы хотите, чтобы ваши данные были структурированы один раз, затем вы можете использовать специальный сгенерированный исходный код, чтобы легко записывать и считывать структурированные данные в различные потоки данных и из них с использованием множества языков. Вы даже можете обновить структуру данных, не нарушая развернутые программы, которые скомпилированы по "старому" формату.

Компиляторы буферов протоколов способны обрабатывать широкий спектр синтаксиса языков, включая C, C++, Java, Objective C, Python и PHP. Это означает, что сообщения, определенные в прото-файлах, могут быть преобразованы в эквивалентные свойства или переменные в исходных файлах, принадлежащих этим языкам, и многие другие.

Определение образца:

message Person {
  string name = 1;
  int32 id = 2;
  string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    string number = 1;
    PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

Больше информации на официальном сайте protobuf. Последняя версия API - proto3, которая в значительной степени похожа на proto2, но имеет некоторые отличия.