2015-02-25 4 views
0

Я создаю приложение для Android, похожее на приложение facebook, предназначенное для отображения различной информации, хранящейся в базе данных. Я использую на стороне сервера API REST, который возвращает ответы на основе различных запросов POST с аутентификацией токена facebook.Архитектура сетевого приложения

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

Поскольку я ' всегда проверяя токены fb и делая подобные POST-запросы, я подумал о добавлении объекта Connexion objet, который создает запрос волейбола при запросе с выполнением (параметры POST ...); метод и вызывает метод обратного вызова, когда ответ пришел.

Но я пытаюсь решить, должен ли я создать объект SessionManager (Singleton или нет?), Который может обрабатывать ВСЕ данные из ответов, связанных с сеансом (например, проверить логин, логин ...), основываясь, возможно, на кодах (для пример Error 5xx для каждого типа ответа) и DO намерения.

or Я должен обрабатывать эти ответы в каждом действии и делать там намерения. Зная, что они могут быть повторяющимися. Короче говоря, я ищу наилучшую практику, когда приложение должно обрабатывать общие ответы, а не такие необычные ответы, например. Сохраняйте всю логику действий? Создать объекты? Не стесняйтесь высказать свое мнение по этому вопросу!

спасибо.

EDIT: Закончено использование объекта Connexion для обработки всех запросов (с волейболом). Что касается намерений, я сохранил всю эту логику в действиях и не использовал другого контроллера. Результат не был уродлив. В основном потому, что я использовал вторичный маршрут, который выполняет аутентификацию, поэтому сервер ВСЕГДА отвечает большой ошибкой, если вы злой хакер.

+0

использовать android HTTp клиент http://developer.android.com/reference/android/net/http/AndroidHttpClient.html – rogerwar

+0

Не волейбол более эффективен? Кроме того, я прошу о том, как * реализовать эти объекты (например, Volley, HttpClient, AsyncTask ...) в приложении. – Mehdi

ответ

1

Прежде всего, я не работаю с Volley, но с Apache HttpClient, это не имеет значения для вашего вопроса. Наличие кода, который обрабатывает Почтовые запросы в ваших действиях, является плохим решением. См.: Single Responsibility Principle

Ваша идея создания SessionManager действительно хороша. Вы можете обрабатывать все вещи в SessionManager и не беспокоиться об этом в своих действиях. Кроме того, вы должны добавлять классы для разных целей, кроме управления сеансом. Если вы получите всех друзей от конкретного пользователя, вы должны создать FriendsController или FriendsManager.

Обработка ответов может быть выполнена в одном классе. Я предполагаю, что вы получаете JSON от вашего API в качестве ответа. Создайте один класс, который принимает ответ и возвращает JSONObject.

Несмотря на то, что это далеко не безупречно, не забудьте взглянуть на мое приложение. В настоящее время я изучаю Android/Java, поэтому он может быть не таким идеальным, как можно было бы ожидать. Классы для обработки POST называются YYYController, а не Manager.Но это только именовании я использую: My Android Project

Ваши звонки могут вернуть перечисление, в котором хранятся различные типы Callback:

class Enum Callbacks { 
    SUCCESS, 
    CREATED, 
    UNPROCESSABLE_ENTITY 
} 

В приложении вы можете использовать их как это:

Callbacks response = SessionManager.login(); 
if (response == Callbacks.SUCCESS) { 
    //your login logic here 
} 
+0

Удивительный ответ. Большое спасибо ! Сделать SessionManager или FriendsManager делать намерения, рекомендуется или не рекомендуется? Дает ли все силы этим объектам, и может ли там быть логика взаимодействия между действиями, а не плохая практика? - Разработчик ищет лучшую вещь для своего приложения: D – Mehdi

+0

У вас не должно быть логики относительно ваших намерений/действий в этих менеджерах. Их единственная цель - получить данные с вашего сервера. – Deutro

+0

Я добавил свой текущий проект в свой ответ. Не стесняйтесь взглянуть на него. – Deutro

Смежные вопросы