2011-12-23 2 views
2

У меня есть веб-приложение, работающее на ASP.NET, и использование SignalR I поддерживает связь в реальном времени между клиентами и сервером.ASP.NET и фоновый рабочий процесс

Мне нужен какой-то рабочий процесс, который работает в цикле, и уведомляет клиентов по мере необходимости с помощью соединений SignalR, и веб-приложение должно иметь возможность вызвать рабочий процесс. (двухсторонняя связь между рабочим процессом и веб-приложением)

Что вы посоветуете для связи между веб-приложением и рабочим?

Сценарий будет:

запрос приходит от клиента -> Я уведомить работника -> работник делает свою работу -> перезванивает веб-приложения -> уведомляет клиента.

или

Работник уведомляет -> веб-приложение, использует SignalR уведомить -> клиентов

Могу ли я использовать экземпляры каким-то образом? Можно ли запустить этого работника в том же домене приложения внутри IIS? Как я могу подойти к этому?

Спасибо!

ответ

1

Как правило, я осуществляю связь между ASP.NET и другим процессом (запланированное консольное приложение в большинстве моих случаев) через базу данных.

I.e. приложение ASP.NET записывает некоторые задания в таблицу заданий, а консольное приложение (которое запускается каждые 10 минут или через Windows Task Scheduler) собирает задания из таблицы базы данных и обрабатывает их.

+1

Я понимаю, но мне нужна очень быстрая связь между веб-приложением и рабочим. Запрос приходит от клиента -> я уведомляю рабочего -> рабочий выполняет свою работу -> обращается к веб-приложению -> уведомляет клиента. –

+1

@TomaCristian Как насчет использования [очереди сообщений] (http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue (v = VS.100) .aspx)? –

+1

Из любопытства вы используете шаблон? Вы приближаетесь, кажется логичным. Легко ли поддерживать ваши коллеги? –

1

Вы можете использовать асинхронный WCF или веб-службу с поддержкой IIS, где запрос инициируется клиентом, а ответ обрабатывается в обратном вызове завершения запроса.

Поскольку IIS может создавать экземпляр отдельного экземпляра вашего класса обслуживания, этот класс может вызвать соответствующего работника напрямую, так как пользователь не будет непосредственно ждать ответа.

+0

Я не беспокоюсь об этом. Мне нужен рабочий, который работает в фоновом режиме, и может отправлять уведомления клиентам через соединения SignalR, которые живут в экземпляре веб-приложения. –