Я бы хотел использовать SignalR с ASP. NET MVC 5.2, потому что я считаю, что это правильный выбор для моих нужд:
Пользователь может начать длительную операцию (определяется уникальный идентификатор) с веб-портала. Когда операция будет завершена, я хочу обновить статус на веб-портале (в данном случае используя SignalR).
Само продолжительное задание не выполняется ASP. NET MVC код Это в совершенно другой системе, однако я могу делать все, что захочу в конце операции (вызвать URL, обновить БД, ...).
Я подумал о двух решениях:
Запись состояния в БД после завершения операции. Мониторинг БД в моем коде ASP. NET MVC и отправка сообщения SignalR при обнаружении правильного состояния в БД
Я думаю, что это не очень хорошее решение, потому что я не Не думаю, что рекомендуется создавать такого рода «фоновые потоки мониторинга» непосредственно на веб-портале, IIS может остановить пул, если нет веб-запросов, например, c ...
Вызов определенного c URL в конце длительной операции
Когда клиент запускает операцию с веб-страницы, я добавляю ее в SignalR Group с именем после уникального идентификатора операции.
я создаю спецификацию c Action
в моем проекте ASP. NET MVC и вызываю соответствующий URL (из внешней системы) при выполнении операции заканчивается, предоставляя уникальный идентификатор операции, чтобы найти правильную группу. Итак, я могу отправить сообщение требуемому клиенту, используя что-то вроде этого:
var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hub.Clients.Group(groupName).signalOperationCompleted();
В этом случае мне нужно будет надлежащим образом защитить это действие, чтобы клиенты не отправляли поддельные сообщения о завершении.
Что вы думаете об этих решениях? Есть ли другой, который будет рекомендован?