Google protocol buffers в мобильных проектах

1,522 views

Published on

This presentation was shown on a February #CiklumMobile (Speaker's corner for mobile developers)

  • Be the first to comment

Google protocol buffers в мобильных проектах

  1. 1. Google ProtocolBuffers в мобильных проектах Домбровский Константин, Ciklum проект Apsmart
  2. 2. Проблемы в клиент-серверных приложенияхдля мобильных платформ •  Использование XML или JSON •  Необходимость переписывать парсеры для различных платформ •  Необходимость переписывать логические структуры данных •  Скорость парсинга часто оставляет желать лучшего •  Все это уныло чуть менее чем полностью
  3. 3. Что такое Google Protocol Buffers? Google Protocol Buffers (GPB) – инструментдля быстрой сериализации и десериализациипростых объектов – сообщений, разработанныйкомпанией Google. Код GPB был открыт по лицензии BSD в2008 году.
  4. 4. Причины созданияGoogle Protocol Buffers:•  GPB проще•  GPB быстрей•  Весит меньше•  Удобно использовать
  5. 5. Язык  описания     структур  данных  Типы  данных:  •  Сообщения•  Вложенные сообщения•  Скалярные типы (int, string, bool, и.т.д.)•  Enum-ы
  6. 6. 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;  }  
  7. 7. Подготовка  к  использованию   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!!!
  8. 8. Как  использовать  GPB  в   проекте?  Очень  просто!!!  
  9. 9. Создание  нового  объекта   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];
  10. 10. Сериализация  и   десериализация   Product* product = [builder build]; NSData* serializedData = [product data]; product = [Product parseFromData: serializedData]; Изменение  объекта   Product_Builder* builder = [Product builderWithPrototype: product]; [builder setId: 9000]; product = [builder build];
  11. 11.  Плюсы  GPB   •  Простота  использования   •  Скорость  работы  (от  20  до  100  раз   быстрее  чем  XML)   •  Меньший  объём  (от  3  до  10  раз  меньше)    База  в  1  триллион  твитов  15  10   Size  (Petabyte)   5   0   XML   GPB  
  12. 12.    Минусы  GPB  •  Отсутствие  наследования  •  Отсутствие  возможности  изменять   объекты  
  13. 13. Спасибо  за  внимание!   Вопросы?   kdombrovsky@gmail.com

×