Введение в паттерн schedulable object, Павел Осипов,...

38
Введение в паттерн SchedulableObject ПАВЕЛ ОСИПОВ РУКОВОДИТЕЛЬ ГРУППЫ РАЗРАБОТКИ ОБЛАКА MAIL.RU ДЛЯ iOS

Upload: mailru-group

Post on 16-Apr-2017

2.421 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Введение в паттерн SchedulableObjectПАВЕЛ ОСИПОВРУКОВОДИТЕЛЬ ГРУППЫ РАЗРАБОТКИ ОБЛАКА MAIL.RU ДЛЯ iOS

Page 2: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Постановка задачи

Page 3: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

60 FPS = 16,7 ms/frame

Как добиться 60 FPS

Page 4: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Арифметика одного фрейма

16,7 - 10 = 6,7

Page 5: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Бизнес-логика отправки файла в Облако

Можем добавить без «лагов»

6,7ms / 2,6 ms = 3

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

Добаление в очередь задачи

Обновлениелокального

кэша

Отправка сетевых запросов

2,6 ms

Page 6: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Отправка больше 3 файлов за раз

Page 7: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Решение проблемы массового добавления файлов в Облако методом позорных констант

Page 8: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Деградация архитектуры: исходное состояние

Page 9: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Деградация архитектуры: явление проблемы

Page 10: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Деградация архитектуры: неправильное решение проблемы «бутылочного горлышка»

Page 11: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Деградация архитектуры: шаг 1

Page 12: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Деградация архитектуры: шаг 2

Page 13: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Деградация архитектуры: шаг N

Page 14: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Thread-Safe Architecture

Page 15: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Решение (не для iOS): Multiprocess Architecture

Page 16: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Решение для iOS: Schedulable Architecture

Page 17: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Принцип действия паттерна SchedulableObject

Page 18: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

1. События2. Очередь событий3. Цикл обработки

сообщений4. Планировщик5. SchedulableObject

Основные компоненты паттерна

Page 19: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Компоненты паттерна: Event

Page 20: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Компоненты паттерна: Event Queue

Page 21: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Компоненты паттерна: RunLoop

Page 22: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

1.NSThread2.NSOperation3.Grand Central Dispatch

Компоненты паттерна: Thread

Page 23: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Компоненты паттерна: Scheduler

Page 24: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Компоненты паттерна: SchedulableObject

Page 25: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Соединяем все вместе: Сервисы

Page 26: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Соединяем все вместе: Assembly

Page 27: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Соединяем все вместе: Application

Page 28: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Библиотека POSSchedulableObject

Page 29: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

POSSchedulableObject: реализация компонент

Компонент Реализация

Event Блоки Objective-C

Event Queue Внутренняя реализация dispatch_queue_t из GCD

Run Loop Внутренняя реализация dispatch_queue_t из GCD

Thread Внутренняя реализация dispatch_queue_t из GCD

Scheduler RACTargetQueueScheduler из ReactiveCocoa

SchedulableObject Базовый класс для управляемых объектов

Page 30: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

POSSchedulable

Page 31: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Объявление класса

Page 32: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Взаимодействие с классом

Page 33: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Сборка объектов: простой случай

Page 34: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Сборка объектов: сложный случай

Page 35: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Сборка объектов: решение сложного случая

Page 36: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

Сборка объектов: пример сложного случая

Page 37: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

1. Библиотека POSSchedulableObject - http://bit.ly/schedulable_object2. Консольное демо-приложение - http://bit.ly/schedulable_object_concept3. Большое демо-приложение для iOS - http://bit.ly/schedulable_object_demo4. Ссылка на презентацию - http://bit.ly/schedulable_object_pptx

Ссылки

Page 38: Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки iOS-приложений Облака Mail.Ru, преподаватель

КонтактыEmail: [email protected]: @posipov