Решение для "дискретных" обновлений в реальном времени

Я создаю приложение ASP.NET Core с угловым интерфейсом. Рассмотрим следующий сценарий. Клиент отправляет запрос. Основываясь на запросе, сервер генерирует сотни или тысячи математических моделей, которые он рассчитывает для некоторой инфраструктуры (пример несколько гипотетичен - так что терпите меня). Результаты возвращаются на сервер через несколько минут. Сервер возвращает какой-то ответ клиенту (в идеале, JSON).

Является ли SignalR решением для такого сценария? Я всегда думал, что SignalR предназначен для более непрерывной (в реальном времени) потоковой передачи; не для дискретного сценария, который я описал. Есть ли другая библиотека, которая бы лучше подходила для этой задачи?

1 ответ

Решение

Я думаю, что SignalR идеально подходит для этого сценария. Сервер должен "сообщить" клиенту, когда данные готовы. Как бы Вы это сделали?

  1. Клиент запрашивает данные каждые несколько секунд, используя интервал. Это может быть хорошо, но допустим, что ваш интервал длится 10 секунд. Если данные будут готовы в секунду 11, вы не будете обновлены до второго числа 20. Вы можете сократить интервал времени для этого вопроса, получая больше звонков на сервер и потери сети.
  2. Клиент поддерживает прямую связь с сервером, прослушивая любые сигналы / обновления. Сервер получает данные, а затем вызывает команду / метод в вашем клиенте. Используя этот метод, вы получаете больше преимуществ, таких как сообщение о прогрессе пользователю (в случае, если вы можете разделить генерацию модели на разные части на сервере), поскольку у SignalR очень простой способ сделать это.
Другие вопросы по тегам