Служба Azure SignalR в базовом приложении ASP.NET
Я читаю очень ограниченную информацию о службе Azure SignalR, а также краткое руководство и хочу убедиться, что я правильно понимаю.
У нас все еще, кажется, есть hub
и если я правильно понимаю, функция службы Azure SignalR состоит в том, чтобы просто отправлять сообщения подключенным клиентам.
В моем случае я сохраняю историю чата, нажимая hub
Во-первых, я все еще могу использовать свою логику бэкэнда, чтобы сохранить историю чата или выполнить любую другую обработку, какую захочу. Затем просто разрешите службе Azure SignalR передавать данные подключенным клиентам.
Кажется, что основным преимуществом является управление масштабированием сервиса.
Я правильно понял?
2 ответа
Да, вы абсолютно правы.
Вы будете использовать точно такой же API-интерфейс ASP.NET Core SignalR для написания бизнес-логики, что означает, что вы можете сохранять все, что захотите, когда сообщения от клиентов попадают в ваши концентраторы.
Служба Azure SignalR будет основным транспортным средством между вашим сервером приложений и подключенными клиентами. Например, если вы хотите передавать сообщения всем своим клиентам, вы фактически отправляете только одно сообщение в службу Azure SignalR, и служба будет транслировать сообщение всем клиентам за вас. Так что вам не нужно беспокоиться о масштабировании. Служба Azure SignalR будет выполнять масштабирование для вас.
Вы правильно поняли.
SignalR еще не готов к работе (если говорить о ASP.NET Core), SignalR для ASP.NET MVC существует уже некоторое время (стабильно).
SignalR состоит из 2 частей: сервер и клиент. Сервер, как вы описываете: "концентратор", который вы можете использовать для передачи информации клиентам.
На веб-странице вы загружаете часть сгенерированного javascript (сгенерированного автоматически из ваших определений хаба). По сути, вы позволяете посетителям вашего сайта (клиентам) подключаться к концентратору через механизм signalR (signalR выберет правильный способ подключения в зависимости от браузера), а затем "подписываетесь" на различные методы, которые вы используете в своем концентраторе.
Работа проста: всякий раз, когда вы вызываете код в своем концентраторе (может быть от клиентов или от внутреннего кода), связь автоматически обрабатывается для вас всеми подписанными клиентами.
Примечание. Если вы запускаете это в веб-приложении Azure: включите параметр "всегда включен" и установите переключатель "websockets" в положение "включено", в противном случае вы увидите странное поведение.
Примечание 2: RC версия для signalR core 1.0 только что была выпущена (7 мая 2018 года), поэтому может пройти некоторое время, прежде чем это программное обеспечение станет стабильным и доступным через общедоступные каналы nuget/npm.