我们的应用分为几层,最重要的是:
- 数据层
- 业务层
- 表示层 (ASP.NET MVC 5)
业务层必须通过 SignalR(表示层)向连接的客户端直播一些信息。这样做的最佳做法是什么?
业务层是否应该使用 OWIN 自托管 SignalR 服务器?或者,如果表示层定义了一个由业务层调用以将信息推送到表示层的 Web 服务(它包含信号器逻辑),那么它是否更干净?
有没有更好的想法?
非常感谢列维
我们的应用分为几层,最重要的是:
业务层必须通过 SignalR(表示层)向连接的客户端直播一些信息。这样做的最佳做法是什么?
业务层是否应该使用 OWIN 自托管 SignalR 服务器?或者,如果表示层定义了一个由业务层调用以将信息推送到表示层的 Web 服务(它包含信号器逻辑),那么它是否更干净?
有没有更好的想法?
非常感谢列维
我为 SignalR 创建了一个事件聚合器(服务总线)代理,这样您就可以在域中的任何位置(业务、数据等)触发事件,并将其转发给您的客户。
使用 nuget 安装
Install-Package SignalR.EventAggregatorProxy
按照 wiki 了解设置它所需的几个步骤。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
{
}
*message 是你的广播字符串消息
这对我来说很好