Мобильный чат с Azure

В настоящее время я занимаюсь разработкой мобильного приложения с использованием Microsoft Azure в качестве серверной части. Пока все, что мне нужно, в значительной степени встроено.

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

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

Очевидно, мне нужен способ для пользователей синхронно и асинхронно получать сообщения. Синхронно, когда они активно используют приложение на своем телефоне, и асинхронно, когда оно находится в фоновом режиме (загружать новые сообщения из очереди, когда приложение снова становится активным).

В служебной шине есть Темы, которые, как я понимаю, допускают архитектуру обмена сообщениями типа издатель-подписчик, однако я считаю, что клиентам все равно нужно запрашивать очередь тем (отправлять запрос) для получения данных. Это не идеально, потому что я не хочу просто жестко запрограммировать цикл, который запрашивает шину облачного сервиса каждую секунду или около того, чтобы достичь чата псевдо-реального времени ... Это, вероятно, приведет к увеличению затрат на сервер по мере роста моей пользовательской базы.

На служебной шине также есть Реле, которые, как я понимаю, обеспечивают двустороннюю связь между служебной шиной и клиентом, а также обеспечивают синхронный обмен сообщениями, основанный на архитектуре издатель-подписчик Тематики (реле объединены с Темы, правда?).

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

Думаю, я мог бы сделать следующее: я мог бы подключить приложение к служебной шине через реле, пока пользователь активно использует приложение (оно находится на переднем плане), и пользователь будет получать чат в реальном времени. Когда пользователь блокирует телефон или иным образом переводит приложение в фоновый режим, я могу прервать соединение Relay, а когда пользователь перезагружает приложение, я могу загружать сообщения из очереди, которые еще не были получены.

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

Спасибо!

Дон


person Don Beckstein III    schedule 23.02.2015    source источник
comment
Это действительно вопрос общественного мнения, поскольку на него нет правильного ответа. Между служебной шиной, веб-сокетами, опросами, push-уведомлениями и т. Д. Есть много вариантов. Вам следует изучить ограничения, связанные с темами и подписчиками, чтобы узнать, будет ли служебная шина масштабироваться вместе с вашим приложением (а также существуют концентраторы событий Azure, которые масштабируются дальше). Итак ... много вариантов, нет единого правильного ответа ...   -  person David Makogon    schedule 29.06.2015


Ответы (1)


взгляните также на SignalR.

есть даже образец приложения чата с использованием мобильных служб Azure с SignalR - посмотрите здесь

person JuneT    schedule 24.02.2015
comment
Спасибо за это! Я также изучаю node.js с помощью NodeChat, но этот SignalR в сочетании со служебной шиной Azure кажется более естественным решением. Хотя я открыт для других вариантов. - person Don Beckstein III; 24.02.2015