2013-10-30 48 views
2

我們的應用程序在多個層之分,最重要的是:SignalR和ASP.NET MVC:整合業務層

  • 數據層
  • 業務層
  • 表示層(ASP.NET MVC 5)

業務層必須通過SignalR(表示層)向連接的客戶端廣播一些信息。這樣做的最佳做法是什麼?

業務層應該使用OWIN自己承載SignalR Server嗎?或者,如果表示層定義了由業務層調用以將信息推送到表示層的Web服務(其保持信號邏輯),那麼它是否更清晰?

有沒有更好的點子?

非常感謝 列維

回答

1

我創建了SignalR一個事件聚合器(服務總線)的代理,這樣你就可以在你的領域(業務,數據等)的任何地方觸發一個事件,它會被轉發到您的客戶端。

安裝使用的NuGet

Install-Package SignalR.EventAggregatorProxy 

遵循需要設置它的幾個步驟,維基。 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

配置後,您可以監聽事件從JavaScript

ViewModel = function() { 
    signalR.eventAggregator.subscribe(MyApp.Events.TestEvent, this.onTestEvent, this); 
}; 

演示項目:

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Demo.MVC4

0

只是在你的業務層安裝SignalR

安裝,包裝Microsoft.AspNet .SignalR

而且......

GlobalHost.ConnectionManager.GetHubContext<BroadcastHub>().Clients.All.Broadcast(message); 

* BroadcastHub可能可以爲空像

public class NotificationHub : Hub 
{ 

} 

*消息是你的廣播字符串信息

這個工作對我來說很好