google protocol buffers in mobile projects

13
Google Protocol Buffers в мобильных проектах Домбровский Константин, Ciklum-Одесса проект Apsmart

Upload: kostia-dombrovsky

Post on 30-Jun-2015

197 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Google Protocol Buffers in mobile projects

Google Protocol Buffers в

мобильных проектах

Домбровский Константин, Ciklum-Одесса проект

Apsmart

Page 2: Google Protocol Buffers in mobile projects

Проблемы в клиент-серверных приложениях для мобильных платформ

• Использование XML или JSON приводит к

необходимости переписывать парсеры

для различных платформ

• Необходимость переписывать

логические структуры данных

• Скорость парсинга часто оставляет

желать лучшего

• Все это уныло чуть менее чем полностью

Page 3: Google Protocol Buffers in mobile projects

Что такое Google Protocol Buffers?

Google Protocol Buffers (GPB) –

инструмент для быстрой сериализации и

десериализации простых объектов –

сообщений, разработанный компанией

Google (Всегда ваш К.О.)

Код GPB был открыт по лицензии BSD в

2008 году.

Page 4: Google Protocol Buffers in mobile projects

Причины создания Google Protocol Buffers:

• GPB проще

• GPB быстрей

• Весит меньше

• Удобно использовать

Page 5: Google Protocol Buffers in mobile projects

Язык описания структур данных

• Сообщения

• Вложенные сообщения

• Скалярные типы (int, string, bool, и.т.д.)

• Enum-ы

• Бинарные данные (bytes)

Типы данных:

Page 6: Google Protocol Buffers in mobile projects

message Product{

required string name = 1;required int32 id = 2;optional int32 price = 3;optional bool starred = 4;

 enum OrderStatus {Ordered = 0; Shipped = 1; Idle

= 2;}optional OrderStatus status = 5;

message ProductReview{

required int32 id = 1;optional string reviewer = 2;optional string review = 3;required in32 rating = 4;

}repeated ProductReview reviews = 6;

}

Page 7: Google Protocol Buffers in mobile projects

Подготовка к использованию GPB в проекте

• Скачиваем исходники GPB для нужного языка

• Компилируем исходники (Придется покрасноглазить 5-10 мин.)

• С помощью компилятора protoc компилируем файл с объявлениями сообщений protoc --proto_path=src --objc_out=build/gen src/shop.proto

• Подключаем получившиеся файлы Shop.pb.h и Shop.pb.m и ProtocolBuffers.h к проекту

• Подключаем проект ProtocolBuffers.xcodeproj к нашему проекту как прямую зависимость

• ???

• PROFIT!!!

Page 8: Google Protocol Buffers in mobile projects

Как использовать GPB в проекте?

Очень просто!!!

Page 9: Google Protocol Buffers in mobile projects

Создание нового объекта

Product_Builder* builder = [Product builder];[builder setId: 0];[builder setName: @"BMW M5"];[builder setStatus: Product_OrderStatusShipped];

Product_ProductReview_Builder* reviewBuilder = [Product_ProductReview builder];

[reviewBuilder setId: 0];[reviewBuilder setReviewer: @"Kostia Dombrovsky"];[reviewBuilder setRating: 5];[reviewBuilder setReview: @"Every BMW rocks!"];[builder addReviews: [reviewBuilder build]];Product* product = [builder build];

Page 10: Google Protocol Buffers in mobile projects

Сериализация и десериализация

Product* product = [builder build];NSData* serializedData = [product data];product = [Product parseFromData: serializedData];

Product_Builder* builder = [Product builderWithPrototype: product];

[builder setId: 9000];product = [builder build];

Изменение объекта

Page 11: Google Protocol Buffers in mobile projects

Достоинства GPB Простота использования Скорость работы (от 20 до 100 раз

быстрее чем XML, быстрее чем JSON)

Меньший объём (от 3 до 10 раз меньше чем XML, до 2х раз меньше чем JSON)

XML GPB02468

1012

База в 1 триллион твитов

Size (Petabyte)

Page 12: Google Protocol Buffers in mobile projects

Недостатки GPB Отсутствие наследования Отсутствие возможности изменять

объекты

Page 13: Google Protocol Buffers in mobile projects

Спасибо за внимание!Вопросы?

https://github.com/THRESHE

[email protected]