Protocol Buffers

Protocol Buffers
Protocol Buffers
Тип

формат сериализации данных

Операционная система

Любая ОС

Первый выпуск

7 июля 2008

Аппаратная платформа

Cross-platform

Последняя версия

2.4.0 (2 февраля 2011)

Состояние

Действующий

Лицензия

BSD

Сайт

http://code.google.com/apis/protocolbuffers/

Protocol Buffers — язык описания данных, предложенный Google[1], как альтернатива XML. Предполагается, что Protocol Buffers проще и легче, чем XML.

Содержание

Общие сведения

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

Недавно бэкенд Twitter перешёл на Protocol Buffers. По заявлению разработчиков Twitter, база в триллион твитов на XML занимала десять петабайт вместо одного.[2]

По заявлениям Google, Protocol Buffers по сравнению с XML:

  • Проще
  • От 3 до 10 раз меньше
  • От 20 до 100 раз быстрее
  • Более однозначный
  • Позволяет создавать классы, которые в дальнейшем легче использовать программно

Protocol Buffers не предназначен для чтения пользователем. Для десериализации данных, необходим отдельный .proto-файл, в котором определяется формат сообщения.

Примеры использования

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

message Car {
  required string model = 1;
 
  enum BodyType {
    sedan = 0;
    hatchback = 1;
    SUV = 2;
  }
 
  required BodyType type = 2 [default = sedan];
  optional string color = 3;
  required int32 year = 4; 
 
  message Owner {
    required string name = 1;
    required string lastName = 2; 
    required int64 driverLicense = 3;
  }
 
  repeated Owner previousOwner = 5;
}

После того, как файл с нужной структурой данных создан, необходимо скомпилировать его компилятором для вашего языка программирования, чтобы сгенерировать класс доступа к этим данным. Этот класс будет содержать простейшие методы доступа ко всем полям типа get/set, а также методы для сериализации и десериализации вашей структуры данных в/из массива байтов.

Примечательно, что можно добавлять к уже созданной структуре данных новые поля не боясь утратить совместимость с предыдущей версией: при парсинге старых записей новые поля просто будут игнорироваться.

Реализация

На данный момент компанией Google созданы компиляторы для языков программирования C++, Java и Python[3]. Но существует ряд проектов сторонних разработчиков, которые создали компиляторы для следующих языков программирования: Action Script, C, C#, Clojure, Common Lisp, D, Erlang, Go, Haskell, JavaScript, Lua, Matlab, Mercury, Objective C, OCaml, Perl, PHP, Python, Ruby, Scala, Visual Basic, Delphi[4].

Примечания

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Protocol Buffers" в других словарях:

  • Protocol Buffers — Entwickler Google Inc. Aktuelle Version 2.4.1 (30 April 2011) Betriebssystem plattformunabhängig Programmier­sprache C++ …   Deutsch Wikipedia

  • Protocol Buffers — infobox software name = Protocol Buffers developer = Google released = 7 July 2008 latest release version = 2.0.2 latest release date = 3 October 2008 latest preview version = latest preview date = operating system = Any platform = Cross platform …   Wikipedia

  • Etch (protocol) — Etch is a new open source [http://tech.slashdot.org/tech/08/05/24/0319234.shtml Cisco To Open Source New Messaging Protocol] ] , cross platform framework for building network services, first announced [http://www.cio.com/article/365513 Cisco… …   Wikipedia

  • Thrift (protocol) — Infobox Software name = Apache Thrift caption = collapsible = developer = Apache Software Foundation latest release version = Apache Incubator latest release date = release date|2008|05|09 latest preview version = latest preview date = operating… …   Wikipedia

  • X Window System core protocol — The X Window System logo The X Window System core protocol[1][2][3] is the base protocol of the X Windo …   Wikipedia

  • MessagePack — Original author(s) Sadayuki Furuhashi Stable release 0.5.7 Development status Active Written in Various languages Operating …   Wikipedia

  • Apache Thrift — Тип RPC framework Разработчик Apache Software Foundation …   Википедия

  • Comparison of data serialization formats — This is a comparison of data serialization formats, different ways to convert complex objects to sequences of bits. It does not include markup languages used exclusively as document file formats. Contents 1 Overview 2 Syntax comparison of human… …   Wikipedia

  • JHepWork — Ejemplo de histograma jHepWork y función Desarrollador principalmente, el Dr. S. Chekanov http://jwork.org/jhepwork Información general …   Wikipedia Español

  • Ubuntu One — Développeur Canonical Ltd. Première version …   Wikipédia en Français


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»