Использование SignalR с ASP. NET MVC 5.2 для отправки сообщения после завершения длительной операции - PullRequest
1 голос
/ 24 февраля 2020

Я бы хотел использовать 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();

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

Что вы думаете об этих решениях? Есть ли другой, который будет рекомендован?

...