2015-04-18 8 views
2

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

Этот процесс аутентификации выполняется через HTTPS-соединение, используя PHP-код на стороне сервера, который возвращает код JSON в приложение, позволяя ему знать, было ли соединение успешным и, если это так, оно также возвращает этот список врачей. Позвольте мне показать кусок JSON кода, который будет возвращен в случае успешного логина в:

JSON-example-code

Очевидно, что если вход в систему не увенчались успехом, атрибут «listOfPatients» не будет нести никаких данных. После того, как сервер будет генерировать этот код JSON, приложение просто прочитает его с помощью JSON Parser.

Теперь представьте, что у врача нет только 3 пациентов, но 100 пациентов. И каждый пациент не имеет всего 3 атрибута («Возраст», «Телефон», «Курильщик»), но десятки из них надлежащим образом вложены в случае необходимости. Тогда у нас был бы довольно большой (но, возможно, не слишком сложный) код JSON для чтения.

В этом проекте я разрабатываю код клиента (то есть приложение для Android), тогда как код сервера написан другим парнем. Он спрашивает меня, как я хотел бы, чтобы код сервера был написан для того, чтобы облегчить взаимодействие с Android Client-Server и обеспечить наилучший, самый удобный пользовательский интерфейс.

Я ответил (это на самом деле, короткая версия моего ответа, не беспокойство по поводу безопасности на стороне сервера-кода, так как это не цель этого вопроса):

  1. Создайте login.php, который позволяет запрашивать POSTS-запросы. Мое приложение отправляет «пользователь» и «пароль», и сервер будет сравнивать его с базой данных.
  2. Затем сервер будет генерировать соответствующий код JSON в зависимости от успеха запроса входа в систему врача.
  3. Приложение Android просто проанализирует этот JSON и отобразит его пользователю в виде представлений списка и т. Д. (Способ отображения этих данных для врача не имеет значения здесь в этом вопросе).

мне было интересно, две вещи:

  1. Зная, что JSON будет содержать сотни атрибутов, насколько эффективен этот код? Есть ли лучший способ достичь этой функциональности? Как бы вы это сделали?
  2. Значительное большинство значений этих атрибутов будет меняться ежедневно (например, «bodyTemperature» или «bloodPressure»). Кроме того, будут иметься «importantNotifications», где пациенты будут уведомлять своих врачей в случае чрезвычайной ситуации. Я не думаю, что было бы эффективно пройти весь процесс («создать сервер JSON ==> клиент читать JSON ==> клиентский дисплей JSON») снова и снова, через минуту, минуту, час за часом, день за днем , Должен быть лучший способ сделать это (возможно, локальное хранилище?), Тогда мне нужно будет различать, какие атрибуты читать только один раз в год («возраст»), раз в месяц («телефон») один раз в день («bodyTemperature»)) или каждые 30 минут («importantNotifications»). Как я мог затем различать, какие значения мне нужно будет читать из JSON в каждом сеансе?)

ответ

0

Теперь вы, вероятно, используете GSON для анализа ответа с сервера. Также вы можете определить значения по умолчанию и сообщить серверу не возвращать что-либо, равное значениям по умолчанию, например, курить - по умолчанию NO (свести к минимуму количество передаваемых данных). Вы, скорее всего, будете отображать пациентов в ListView или RecyclerView. Google немного, как реализовать ленивых загрузчиков, а это означает, что вы говорите серверу, чтобы он возвращал всего несколько результатов, а не все, и когда пользователь прокручивается до конца, вы спрашиваете сервер чтобы дать вам больше, если они есть. Также использование кешей на Android - отличный способ сохранить несколько ненужных запросов на сервер. Вы определяете, как долго действителен кеш, скажем, 5 минут, и если вы хотите повторно заполнить список, проверьте, действительно ли он действителен. Но вы всегда должны оставить опцию обновления вручную, SwipeToRefresh - отличный и простой способ сделать именно это. Надеюсь, что у кого-то еще может быть что-то еще, так как меня это интересует.

+0

Хорошо, хороший ответ, посмотрим, придет ли кто-нибудь еще и поможет нам. Если бы у меня было 10 очков репутации, я бы поставил изображение прямо в вопрос, чтобы сделать его более привлекательным. Нельзя повышать, так как для этого требуется не менее 15 очков репутации. –

+0

У вас еще есть 10 :) В любом случае, я уверен, что до ответа на этот ответ вам будет достаточно, чтобы проголосовать за ответы :) –

+0

Спасибо! Будем надеяться, что разработчики просто решат, что это не вопрос, который стоит прочитать из-за его длительного контента! –

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