2013-12-12 28 views
1

我有一個管理事件記錄和看起來像這樣的n層遺留應用程序:SignalR在複雜的n層應用程序

enter image description here

警報由Windows服務整理成事件的記錄,並用戶通過Web應用程序將其與服務檯票據進行協調。

該Web應用程序有一個列表頁面,當前每分鐘都會重新加載一次。我想通過使用SignalR廣播任何記錄更改來替換此輪詢行爲。

如果這個應用程序只是Web部件,那麼SignalR集線器在Web層中的佈局將很簡單。我的困難在於Windows服務如何通知中心對事件記錄進行了更改。

由於Web應用程序是負載平衡的,我正在考慮使用Sql instance to host a SignalR backplane。 Windows服務可以直接與此交互嗎?

我將不得不創建第三個應用程序來承載SignalR集線器,並以某種方式讓Web應用程序和Windows服務與之通信?

任何建議是最受歡迎的。

回答

1

您可以在ASP.net中託管SignalR,這並不重要。您的Windows服務應建立連接,並在SignalR上調用某種方法,以便SignalR隨後可以向其他客戶端調用有關更改。

+0

這就是我希望做的。我不認爲你已經見過一個Windows服務在任何地方調用Web託管集線器的例子嗎?我猜最棘手的部分是windows服務正在sql框上運行。 – Nick

+0

老實說,我還沒有嘗試過,但不是隻是創建一個正確的URL連接,並調用它的一些方法,只要你有正確的引用和.net版本。 –

+0

好吧,所以我的Windows服務將不得不作爲客戶端並對http信號集線器進行http調用。我發現這個 - http://sonyarouje.com/2012/10/02/signalr-real-time-pushing-of-data-to-connected-clients/ - 這是一個類似的用例。 – Nick

0

除非我誤解了您的場景,否則您可以簡單地在您的Windows服務中自行託管SignalR服務器,並在那裏創建您的集線器類。您完全不需要將Web應用程序包含在SignalR通信中,您只需使用它來爲您的靜態腳本提供服務。您的網頁使SignalR連接到Windows服務中託管的服務器,並從那裏您可以通知更新。