В настоящее время я занимаюсь разработкой мобильного приложения с использованием Microsoft Azure в качестве серверной части. Пока все, что мне нужно, в значительной степени встроено.
В любом случае, приложение, которое я делаю, представляет собой приложение для обмена сообщениями, в котором есть многопользовательские чаты. Я никогда не занимался бэкэнд-программированием, и теперь мне нужно научиться всему сразу.
Я просмотрел документацию по Azure и заметил, что функция служебной шины Azure может быть тем, что я ищу, но я не уверен, что это лучший способ реализовать такую службу.
Очевидно, мне нужен способ для пользователей синхронно и асинхронно получать сообщения. Синхронно, когда они активно используют приложение на своем телефоне, и асинхронно, когда оно находится в фоновом режиме (загружать новые сообщения из очереди, когда приложение снова становится активным).
В служебной шине есть Темы, которые, как я понимаю, допускают архитектуру обмена сообщениями типа издатель-подписчик, однако я считаю, что клиентам все равно нужно запрашивать очередь тем (отправлять запрос) для получения данных. Это не идеально, потому что я не хочу просто жестко запрограммировать цикл, который запрашивает шину облачного сервиса каждую секунду или около того, чтобы достичь чата псевдо-реального времени ... Это, вероятно, приведет к увеличению затрат на сервер по мере роста моей пользовательской базы.
На служебной шине также есть Реле, которые, как я понимаю, обеспечивают двустороннюю связь между служебной шиной и клиентом, а также обеспечивают синхронный обмен сообщениями, основанный на архитектуре издатель-подписчик Тематики (реле объединены с Темы, правда?).
Кроме того, у каждого чата может быть своя собственная тема, и пользователи, которые присоединяются к указанному чату, подписываются на эту тему.
Думаю, я мог бы сделать следующее: я мог бы подключить приложение к служебной шине через реле, пока пользователь активно использует приложение (оно находится на переднем плане), и пользователь будет получать чат в реальном времени. Когда пользователь блокирует телефон или иным образом переводит приложение в фоновый режим, я могу прервать соединение Relay, а когда пользователь перезагружает приложение, я могу загружать сообщения из очереди, которые еще не были получены.
Я хочу знать, рекомендуются ли служебные автобусы для такого рода сообщений или я неправильно их понимаю. Что бы вы порекомендовали для такого рода услуг? Я открыт для других идей, но я бы предпочел, чтобы серверные вещи были легкими. Мне нужно уже многому научиться!
Спасибо!
Дон