Protocol buffers: библиотека обмена данными для C++, Java, Python от Google

Наконец-то я могу поделиться тем, чему уже давно радуюсь сам: Google открывает исходники Protocol Buffers! Что это и почему надо радоваться? Это простой и удобный способ обмена данными. Можно сказать, альтернатива XML, но гораздо менее амбициозная и (поэтому) более быстрая и компактная. Далее - перевод отрывка анонса в блоге Open Source at Google и пример использования.

Protocol Buffers позволяют описывать простые структуры данных на специальном языке, который затем компилируется в классы, представляющие эти структуры. Вместе с классами идёт оптимизированный код их сериализации в компактный формат представления. А лучше всего то, что доступ к данным максимально упрощён: для доступа к каждому полю у класса имеются соответствующие методы "get" и "set", а для сериализации объекта в массив байтов или поток ввода/вывода нужно сделать всего один вызов.

Определение простого объекта:

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

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

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

repeated PhoneNumber phone = 4;
}


Пример C++ кода:

Person person;
person.set_name("John Doe");
person.set_id(1234);
person.set_email("jdoe @example.com");
fstream output("myfile", ios::out | ios::binary);
person.SerializeToOstream(&output);


И примерно то же самое на Python:

import addressbook_pb2
person = addressbook_pb2.Person()
person.id = 1234
person.name = "John Doe"
person.email = "jdoe @example.com"
proto_string = person.SerializeToString()


Итак, встречаем Protocol Buffers (документация).


Автор: http://rojer.habrahabr.ru/



Опубликовал admin
30 Июл, Среда 2008г.



Программирование для чайников.