Что нам стоит rest client построить

Post on 18-Jul-2015

93 Views

Category:

Mobile

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Что нам стоит 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

Логирование

Как лучше?

–– Логировать все события

–– Логировать все события–– Логировать класс ошибок

–– Логировать все события–– Логировать класс ошибок–– Иметь специальные обработчики

–– Логировать все события–– Логировать класс ошибок–– Иметь специальные обработчики–– Не кидать стэктрейсы в продакшене

Итоги монолога

Матвей Мальков

malkov.matvey@gmail.com

matveyka_jj

СПАСИБО

top related