Санкт-Петербургский Государственный Университет Математико-механический факультет





НазваниеСанкт-Петербургский Государственный Университет Математико-механический факультет
страница6/13
Дата публикации16.08.2013
Размер0.61 Mb.
ТипДипломная работа
100-bal.ru > Информатика > Дипломная работа
1   2   3   4   5   6   7   8   9   ...   13

Protobuf


Protocol Buffers – решение, которое предлагает корпорация Google. Представляет собой способ кодирования структурированной информации в эффективный формат. Имеет много пользовательских дополнений к реализации, которые представляют способ генерации кода в языки, не предусмотренные Google. В данный момент имеется поддержка порядка 25 языков программирования. Качество реализации под языки, которые не поддерживают разработчики Google, остается на ответственности сторонних разработчиков, нет никаких гарантий, что там нет ошибок, каких-либо недоработок и неоптимального кода.

На основе Protobuf построено некоторое количество реализаций RPC. Примером такой технологии является ZeroC, рассмотренный выше.

В примере (лист.5) приведено сообщение, которое содержит описание человека.

message Human {

required string name = 1;

required int32 age = 2;

optional bool hasWork = 3;
enum Sex {

MAN = 0;

WOMAN = 1;

UNKNOWN = 2;

}
required Sex sex = 4 [default = UNKNOWN];

repeated string phone = 5;

}

Листинг 5. Пример сообщения в Protobuf

Из примера видно, что в данном языке описания сообщений присутствуют дополнительные дескрипторы. В данном синтаксисе определено два разных понятия: обязательное поле и опциональное. Если в одной версии приложения используется обязательное поле, а в следующей нет, то программа может перестать работать. Поэтому документация призывает внимательно выбирать, делать ли поле обязательным. Сами разработчики Google используют разные подходы при описании структур: некоторые используют обязательные поля, а некоторые в абсолютно всех ситуациях используют опциональные.

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

Кодирование производится в битовый формат, который в дальнейшем преобразуется в байты. То есть, нет поддержки base64, хотя она могла бы быть, так как из битового массива легко получить его.

Чаще всего при передаче числе типа integer передаются не столь большие значения: их можно сохранить в 7 бит. Реже встречаются такие, которые можно записать в 14 бит, и так далее. Разработчики protobuf придумали простую оптимизацию, которая не может гарантировать всегда лучший результат, но чаще всего даёт уменьшение объёма сообщения: числа хранятся не по байтам, а по 7 бит, 8ой же бит означает, содержатся ли ещё байты в числе.

Рассмотрим пример кодирования числа «9», оно будет закодировано так: «0 0001001». То есть вместо 2 байтов или 4 будет использован всего 1. Если же кодируется число «300», то получится «1 0101100 0 0000010», то есть два байта. Здесь первый бит равный 1 означает, что сообщение содержит ещё байты из этого числа.

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

Использование base128 является эмпирическим, но в среднем будет давать лучшие результаты, чем хранение всего числа или длины числа. Также этот алгоритм даёт простоту реализации. Многие разработчики выбирают protobuf, а не ASN.1 именно из-за простоты и легковесности.

Protocol Buffers предлагает некоторые возможности для расширения сообщений: добавление extensions, но их использование не является удобным. Для примера, если объявлено новое поле age в сообщении Human, то в коде программы придется делать следующий вызов: «human.setExtension(age, 22)». Очевидно, что это не является наследованием и возможности его реализовать нет.

Решение от Google представляет собой достаточно ёмкий протокол, который удобен для многих программистов, но его возможности не столь широки, как хотелось бы. Однако основной алгоритм кодирования может быть перенят, поскольку прост, но продуктивен.
1   2   3   4   5   6   7   8   9   ...   13

Похожие:

Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Математико-механический факультет
Министерством образования и науки Российской Федерации. В 2012-2013 учебном году литературное образование в школе на базовом уровне...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный морской технический университет...
Рецензия на книгу: С. А. Остроумов "Биотический механизм самоочищения пресных и морских вод: элементы теории и приложения" (Москва,...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Краснодарский государственный историко-археологический музей-заповедник им. Е. Д. Фелицына
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОбзор современных систем управления бизнес-процессами
Агапова Татьяна, математико-механический факультет, 2 курс
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПсихическое здоровье в Германии и России: Клиническая и исследовательская инициатива
Санкт-Петербургский научно-исследовательский Санкт-Петербургский государственный университет
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет asmpy ассемблер python compiled (*. pyc ) файлов
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-петербургский Государственный университет Восточный факультет Филиппов Е. А. Аннотация
Метадическая разработка интегрированного урока с использованием возможностей интерактивной доски
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПравительство Российской Федерации Санкт Петербургский государственный...
Муниципальное автономное образовательное учреждение «Средняя общеобразовательная школа №21»
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский центр научно-технической информации «Прогресс»,...
Особенности размещения государственного заказа в связи с изменениями в федеральном
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Учебно-методический комплекс по дисциплине «Биохимия молока и мяса» составлен на основе
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПрограмма по формированию навыков безопасного поведения на дорогах...
Санкт-Петербургский Государственный Политехнический Университет, Факультет Иностранных Языков
Санкт-Петербургский Государственный Университет Математико-механический факультет iconРоссийской Федерации Санкт Петербургский государственный университет Физический факультет
Цель изучения дисциплины: Обучение магистрантов аналитическим методам анализа структуры и эволюции нелинейных полей
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Факультет философии и политологии
Контрольная работа по дисциплине «Культура речи и деловое общение» является допуском студента заочной формы обучения к зачету


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск