2011-12-23 80 views
2

我有一個運行在ASP.NET上的Web應用程序,並使用SignalR I支持客戶端和服務器之間的實時通信。ASP.NET和後臺工作進程

我需要某種類型的工作進程在循環中工作,並根據需要使用SignalR連接通知客戶端,並且Web應用程序必須能夠調用工作進程。 (工作進程和Web應用程序之間雙向通信)

你會推薦的Web應用程序和工人之間的通信是什麼?

一個情況是:

請求從客戶端進來 - >我通知工人 - >工人做他的工作 - >回調到Web應用程序 - >通知客戶端。

工人通知 - > Web應用程序,使用SignalR通知 - >客戶

我可以以某種方式共享實例?我可以在IIS內的同一應用程序域中運行此工作程序嗎?我該如何解決這個問題?

謝謝!

回答

1

通常我通過數據庫在ASP.NET和另一個進程(我的大多數情況下是一個預定的控制檯應用程序)之間進行通信。

I.e. ASP.NET應用程序將一些作業寫入作業表,並且控制檯應用程序(每隔10分鐘左右通過Windows任務計劃程序運行)從數據庫表中提取作業並處理它們。

+1

我明白,但我需要網絡應用程序和工作人員之間非常快速的溝通。請求來自客戶端 - >我通知工作人員 - >工作人員完成他的工作 - >回調到Web應用程序 - >通知客戶端。 – 2011-12-23 22:18:22

+1

@TomaCristian如何使用[消息隊列](http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue(v = VS.100).aspx)? – 2011-12-23 22:20:17

+1

出於好奇,你使用的模式?你的方法似乎合乎邏輯。你的同事容易維護嗎? – 2011-12-23 22:38:05

1

您可以使用異步IIS託管的WCF或Web服務,其中請求是從客戶端發起的,並且響應在請求完成回調中處理。

由於IIS可以實例化一個單獨的服務類實例,因此該類可以直接調用相應的工作者,因爲用戶不會直接等待響應。

+0

我並不擔心這一點。我需要一名在後臺工作的工作人員,並能夠通過Web應用程序實例中的SignalR連接將通知推送給客戶端。 – 2011-12-24 16:40:41