Введение в паттерн schedulable object, Павел Осипов,...
TRANSCRIPT
Введение в паттерн SchedulableObjectПАВЕЛ ОСИПОВРУКОВОДИТЕЛЬ ГРУППЫ РАЗРАБОТКИ ОБЛАКА MAIL.RU ДЛЯ iOS
Постановка задачи
60 FPS = 16,7 ms/frame
Как добиться 60 FPS
Арифметика одного фрейма
16,7 - 10 = 6,7
Бизнес-логика отправки файла в Облако
Можем добавить без «лагов»
6,7ms / 2,6 ms = 3
Создание объекта BLOB
Добаление в очередь задачи
Обновлениелокального
кэша
Отправка сетевых запросов
2,6 ms
Отправка больше 3 файлов за раз
Решение проблемы массового добавления файлов в Облако методом позорных констант
Деградация архитектуры: исходное состояние
Деградация архитектуры: явление проблемы
Деградация архитектуры: неправильное решение проблемы «бутылочного горлышка»
Деградация архитектуры: шаг 1
Деградация архитектуры: шаг 2
Деградация архитектуры: шаг N
Thread-Safe Architecture
Решение (не для iOS): Multiprocess Architecture
Решение для iOS: Schedulable Architecture
Принцип действия паттерна SchedulableObject
1. События2. Очередь событий3. Цикл обработки
сообщений4. Планировщик5. SchedulableObject
Основные компоненты паттерна
Компоненты паттерна: Event
Компоненты паттерна: Event Queue
Компоненты паттерна: RunLoop
1.NSThread2.NSOperation3.Grand Central Dispatch
Компоненты паттерна: Thread
Компоненты паттерна: Scheduler
Компоненты паттерна: SchedulableObject
Соединяем все вместе: Сервисы
Соединяем все вместе: Assembly
Соединяем все вместе: Application
Библиотека POSSchedulableObject
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 Базовый класс для управляемых объектов
POSSchedulable
Объявление класса
Взаимодействие с классом
Сборка объектов: простой случай
Сборка объектов: сложный случай
Сборка объектов: решение сложного случая
Сборка объектов: пример сложного случая
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
Ссылки
КонтактыEmail: [email protected]: @posipov