我们的应用程序分为几层,最重要的是:
- 数据层
- 业务层
- 表示层(ASP.NET MVC 5)
业务层必须通过 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);
};
演示项目:
https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Demo.MVC4
只需在业务层中安装 SignalR 即可
Install-Package Microsoft.AspNet.SignalR
和。。。
GlobalHost.ConnectionManager.GetHubContext<BroadcastHub>().Clients.All.Broadcast(message);
*广播中心可以是空的,比如
public class NotificationHub : Hub
{
}
*消息是您的广播字符串消息
这对我很好