2013-10-02 80 views
5

方案是遵循外部服務發送通知給網絡客戶端新消息可供他們使用。一切工作正常,Web應用程序註冊connectionId以及他們的用戶名,信號通過notificationAdapter類從DataLayer發送到集線器。通過在Asp.Net MVC應用程序託管的SignalR樞紐

的問題時,我們必須創建一個單獨的服務撬動Quartz.Net當任務完成後也發私信來了。我們希望Quartz服務能夠聯繫Hub,但我們不能讓它處於獨立的過程中。我不想使用signalR.net客戶端,因爲我不需要基於Quartz的服務和我的Web App之間的永久連接。我想在我的WebSite中創建一個端點來將Hub的服務器方法暴露給服務,或者爲此使用ScaleOut,但是我覺得我錯過了一些東西,儘管我會問社區。

+0

我不知道你爲什麼不想永久連接? SignalR客戶端的全部重點都是在集線器之間進行過程分工。你可以做你的建議,但它有點挫敗了SignalR的全部目的,你會失去任何雙向溝通...... – Steve

+0

@Steve:我想我不想要它,因爲我沒有需要它是永久性的,也不是雙向的。 – VdesmedT

+1

你有沒有考慮過使用總線(RabbitMQ,NServiceBus等)? Quartz.Net可以在總線上發佈消息,並且訂閱者可以選擇消息並通過SignalR向任何連接的客戶端(Web應用程序)發送警報。 – codingintherain

回答

4

因爲沒有實際接受的答案,這可能是一個非常晚的答案,但看到的。我會提供一個。

讓Quartz.NET應用程序向你的ASP.NET Web應用程序發送信息而不實施諸如企業服務總線(ESB)之類的繁重解決方案的最簡單方法是簡單地在ASP.NET中公開一個Web服務並讓你的Quartz.NET在任務完成時調用ASP.NET Web服務。一旦進入ASP.NET Web服務,您應該能夠通知信息通過signalR向客戶端發送通知。

+0

那的確是我當時所做的;-)謝謝 – VdesmedT

1

我會用石英偵聽器(工作或觸發聽者)在的WebAPI,然後會談到Hub。

當然,使用石英客戶機(網絡API)和服務器(窗口服務)之間的共享ADO存儲。

相關問題