Буферы протоколов для обмена данными за пределами JSON

Protocol Buffers - язык определения данных, созданный Google, который можно сравнить с IDL, но который намного проще. Его синтаксис, основанный на синтаксисе языка C, относится к синтаксису JSON с отличием от использования типичных переменных.
Google определила этот язык для использования на собственных серверах, которые хранят и обмениваются объемами структурированных данных, а в 2008 году решила перевести его в открытый источник. Он используется в Android для ускорения обмена с сервером (например, в Marketplace).

Файлы протос имеют двойной формат, читаемый человеком источник и бинарный файл, который может быстро обрабатываться машиной.
Его можно использовать по трем причинам :

Простой формат с расширенными инструментами

Во-первых, некоторые определения для уточнения:

Protocol Buffers - имя языка и имя единиц данных, инкапсулированных в файлы protos.
Proto: файл определения данных на языке PB и расширение .proto.
Protoc - имя компилятора, генерирующего классы или бинарный файл .

Особенности языка

Синтаксис

Каждый источник имеет форму:

message nom     {     
  ...liste de champs de données...   
 }

Основные типы скалярных данных - string, int32, int64, float, double, bool.
Переменные могут быть объявлены вместе с требуемым, опционным, повторяющимся модификатором.

Им присваивается порядковый номер, который является директивой компилятора, а не значением переменной.

required string x = 1  // ce n'est pas la valeur 1

Стартовое значение присваивается директиве по умолчанию:

required string x = 1 [default="Un texte"];    

К примитивам добавляются вложенные типы, определенные путем включения сообщения в другое сообщение:

message contenant
{
  required int32 numero = 1;  
  message contenu
  {
    repeated string x = 1;
  }
}

К объекту «content» и его переменным можно получить доступ по строке: contant.contenu.x

В сообщения можно включать перечисления с типом перечисления.

При определении структуры сообщения оно используется в программе путем создания экземпляра. И мы связываем методы, специфические для сообщения и созданные составителем источника proto.

contenant moninstance;
moninstance.set_numero(18);

Пример кода

Показать сообщение.

message hello
{
    required string = 1 [default="le message"];
    optional int32 = 2;
} 

Подробнее о формате в определении языка PB.

Загрузите компилятор Protoc с полной документацией.

См. также...