我們的應用程序在多個層之分,最重要的是:SignalR和ASP.NET MVC:整合業務層
- 數據層
- 業務層
- 表示層(ASP.NET MVC 5)
業務層必須通過SignalR(表示層)向連接的客戶端廣播一些信息。這樣做的最佳做法是什麼?
業務層應該使用OWIN自己承載SignalR Server嗎?或者,如果表示層定義了由業務層調用以將信息推送到表示層的Web服務(其保持信號邏輯),那麼它是否更清晰?
有沒有更好的點子?
非常感謝 列維
我們的應用程序在多個層之分,最重要的是:SignalR和ASP.NET MVC:整合業務層
業務層必須通過SignalR(表示層)向連接的客戶端廣播一些信息。這樣做的最佳做法是什麼?
業務層應該使用OWIN自己承載SignalR Server嗎?或者,如果表示層定義了由業務層調用以將信息推送到表示層的Web服務(其保持信號邏輯),那麼它是否更清晰?
有沒有更好的點子?
非常感謝 列維
我創建了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);
};
演示項目:
只是在你的業務層安裝SignalR
安裝,包裝Microsoft.AspNet .SignalR
而且......
GlobalHost.ConnectionManager.GetHubContext<BroadcastHub>().Clients.All.Broadcast(message);
* BroadcastHub可能可以爲空像
public class NotificationHub : Hub
{
}
*消息是你的廣播字符串信息
這個工作對我來說很好