Работа с HTTP запросами

Все части приложения кроме обмена сообщениями реализованы с помощью HTTP запросов. Приложение должно обеспечивать работу с сетью полностью в отдельном потоке, не вызывая блокировки интерфейса.

По умолчанию в Android все операции происходят в основном потоке приложения, соответственно нам необходимо выделить отдельный поток для работы с сетью и создать очередь для выполнения запросов.

Запросы реализованы с помощью REST модели, в качестве формата данных, служащих для связи с сервером, используется JSON.

Соответственно необходимо реализовать следующую архитектуру: создать интерфейс для вызова концертных запросов, в котором должны быть описаны пути конкретных запросов, далее необходим отдельный Singleton класс, создающий объект для работы с интерфейсом, описанным ранее. Данный класс должен хранить базовый адрес сервера.

REST модель

Рисунок 11. REST модель

Singleton - это шаблон проектирования, гарантирующий, что порожденный объект будет создан в единственном экземпляре во время выполнения программы.

Singleton pattern

Рисунок 12. Singleton pattern

В интерфейс помимо параметров запроса должны передаваться сущности для обработки ответа. Обработка ответа должна быть вынесена в отдельный класс, представляющий возможности для обработки ошибок в запросах, а в случае их отсутствия методы для создания моделей для последующей передачи во view. Данный функционал уже реализован в presenter для каждого экрана. Presenter может вызвать нужный метод интерфейса для работы с сетью, передав ему нужные параметры.

Каждый model класс содержит метод, позволяющий получить экземпляр модели из JSON строки. Таким образом работа с сетью полностью отделена от логики работы с экраном.

Также стоит отметить, что работа с комментариями - их отправка и обновление - реализуется через long polling запросы, соответственно интерфейс для работы с сетью должен учитывать возможность разного типа запросов.

Long polling

Рисунок 13. Long polling

Long polling - вид связи с сервером, при котором сервер вместо мгновенного ответа на запрос запускает цикл и на каждой итерации проверяет возникновение новой информации, в случае чего отправляет её клиенту.

 
< Пред   СОДЕРЖАНИЕ   Загрузить   След >