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

Post on 16-Apr-2017

2.421 Views

Category:

Software

3 Downloads

Preview:

Click to see full reader

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: posipov@bk.ruTwitter: @posipov

top related