Что нам стоит REST Client построить?Матвей Мальков, Lead Android Developer
Обо мне
–– 2GIS Android team
–– CodeFest mobile section
–– Noveo
REST Client
Хороший Клиент
–– Отзывчивый UI
–– Отзывчивый UI–– Данные есть всегда
–– Отзывчивый UI–– Данные есть всегда–– Умные запросы
–– Отзывчивый UI–– Данные есть всегда–– Умные запросы–– Гибкая архитектура
–– Отзывчивый UI–– Данные есть всегда–– Умные запросы–– Гибкая архитектура–– Диагностируемый код
Плохой клиент
–– Отзывчивый UI–– Данные есть всегда–– Умные запросы–– Гибкая архитектура–– Диагностируемый код
Структура
UI
Background service
Request Handler
Rest Service
Cache
UI
Background service
Request Handler
Rest Service
Cache
UI
Background service
Request Handler
Rest Service
Cache
CacheAdapter
UI
Background service
Request Handler
Rest Service
Cache
CacheAdapter
UI
Background service
Request Handler
Rest Service
Cache
CacheAdapter
–– Async
–– Async
–– Client-Server
–– Async
–– Client-Server
–– XML, JSON
–– Async
–– Client-Server
–– XML, JSON
–– Кэширование
Async && REST
–– Ссылка
–– Ссылка–– Хэдеры
–– Ссылка–– Хэдеры–– Тип запроса
–– Ссылка–– Хэдеры–– Тип запроса–– Тело
–– Ссылка–– Хэдеры–– Тип запроса–– Тело–– HttpClient
–– Ссылка–– Хэдеры–– Тип запроса–– Тело–– HttpClient
– отправит запрос– получит ответ
Http Client
–– Apache
–– HttpUrlConnection
–– OkHttp by Square
–– stable!
–– stable!–– Connection pooling (if not SPDY)
–– stable!–– Connection pooling (if not SPDY)–– Proxy problems
–– stable!–– Connection pooling (if not SPDY)–– Proxy problems–– Shared socket (if SPDY)
–– stable!–– Connection pooling (if not SPDY)–– Proxy problems–– Shared socket (if SPDY)–– GZip
–– stable!–– Connection pooling (if not SPDY)–– Proxy problems–– Shared socket (if SPDY)–– GZip–– Interceptors!!!
Higher level
–– Мало кода
–– Много функционала
–– Гибко
Retrofit
–– Логируйте
–– Не забывайте про хэдеры
–– Пагинация – ваш друг
–– interceptors
XML/JSON
–– XML JSON FTW!
–– XML JSON FTW!–– Берите то, что надо
–– XML JSON FTW!
–– Берите то, что надо
–– @SerializedName(“fieldName”)
–– XML JSON FTW!
–– Берите то, что надо
–– @SerializedName(“fieldName”)
–– Версионируйте
Кэширование
–– SQLite
–– SQLite–– Файлы
–– SQLite–– Файлы–– LruCache
–– SQLite–– Файлы–– LruCache–– NoSQL
–– SQLite–– Файлы–– LruCache–– NoSQL
–– CouchBase Lite
–– SQLite–– Файлы–– LruCache–– NoSQL
–– CouchBase Lite–– Realm
–– NoSQL в SQL
–– NoSQL в SQL–– Мало столбцов
–– NoSQL в SQL–– Мало столбцов–– Много данных
–– NoSQL в SQL–– Мало столбцов–– Много данных–– Издержки на парсинг
–– NoSQL в SQL–– Мало столбцов–– Много данных–– Издержки на парсинг
–– Структура!
Bonus part
Логирование
Как лучше?
–– Логировать все события
–– Логировать все события–– Логировать класс ошибок
–– Логировать все события–– Логировать класс ошибок–– Иметь специальные обработчики
–– Логировать все события–– Логировать класс ошибок–– Иметь специальные обработчики–– Не кидать стэктрейсы в продакшене
Итоги монолога
Top Related