Архитектура приложения Xamarin.Android

У меня есть один из тех вопросов, которые трудно задать или ответить на форуме. Недавно мне было поручено разработать (и реализовать) приложение, которое будет работать на ОС Android. Поскольку я пришел из мира .net, я решил использовать платформу Xamarin.Android (ранее известную как моно для Android). Я провел небольшое исследование целевой структуры и придумал грубый дизайн. Но так как я новичок в мире Android, я не уверен, что мой дизайн лучший (или даже приемлемый). Постараюсь быть максимально кратким в своем описании. Основные требования к заявке:

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

На основании своих исследований я прихожу к следующему:

Чтобы предоставить индивидуальный графический интерфейс для каждого пользователя, приложение сначала аутентифицирует пользователя, а затем извлекает XML-файл с сервера, который затем используется для программного создания графического интерфейса. Поскольку я должен поддерживать ротацию устройств и различные устройства, это означает много работы, поэтому любые мысли по этому поводу будут очень кстати.

Я думаю, что лучший способ связи приложения с сервером - это вызов служб на основе REST (GET для получения исходных данных и PUT для обновления состояния сервера).

Когда состояние сервера будет изменено одним из пользователей, все остальные пользователи будут уведомлены с помощью уведомлений (обмен облачными сообщениями Google или GCM, который заменил старый C2DM). Поскольку большинство действий будет зависеть от уведомлений для отображения обновлений, я думаю, что лучший способ реализовать это — создать службу Android. Служба будет запущена с приложением и будет работать до тех пор, пока приложение. Когда служба будет запущена, она зарегистрирует себя в GCM, а затем будет использовать широковещательную рассылку, чтобы уведомить текущую активность о том, что что-то изменилось.

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

Урош


person Uroš    schedule 15.05.2013    source источник


Ответы (1)


Я был бы более склонен к транспортировке/обработке конфигурации GUI как JSON.

REST API кажется логичным выбором - я использовал RestSharp для клиентской стороны, чтобы делать такие сообщения, и я очень доволен этим.

GCM легко настроить, так что это хороший выбор. Вы также можете рассмотреть собственное решение для длинных опросов в зависимости от ваших потребностей, но GCM может быть проще.

PushSharp стоит обратить внимание, если вам нужны кроссплатформенные push-уведомления, но если нет, напишите ваше собственное серверное приложение GCM похоже на падение - у меня есть пример с нуля, работающий с парой десятков строк Ruby.

person manadart    schedule 15.05.2013
comment
Спасибо за Ваш ответ. Я намеревался использовать библиотеку PushSharp, так как вполне возможно, что когда-нибудь приложение будет работать и на IPhone, поэтому я буду использовать ту же библиотеку для уведомления этих клиентов. Я посмотрю на библиотеку RestSharp. Можете ли вы указать мне какие-либо примеры того, как реализовать создание графического интерфейса с использованием xml/json. - person Uroš; 17.05.2013
comment
Я предполагаю, что у вас будет документ JSON/XML для каждого пользователя и действия, которые создают любой динамический контент с использованием примерно такой техники: stackoverflow.com/questions/6216547/ - person manadart; 20.05.2013
comment
Этот ответ был полезен? ;) - person manadart; 10.09.2013