4

我们的应用分为几层,最重要的是:

  • 数据层
  • 业务层
  • 表示层 (ASP.NET MVC 5)

业务层必须通过 SignalR(表示层)向连接的客户端直播一些信息。这样做的最佳做法是什么?

业务层是否应该使用 OWIN 自托管 SignalR 服务器?或者,如果表示层定义了一个由业务层调用以将信息推送到表示层的 Web 服务(它包含信号器逻辑),那么它是否更干净?

有没有更好的想法?

非常感谢列维

4

2 回答 2

1

我为 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

于 2013-10-30T16:44:57.453 回答
0

只需在您的业务层中安装 SignalR

安装包 Microsoft.AspNet.SignalR

和...

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

*BroadcastHub 可以为空,例如

public class NotificationHub : Hub
{

}

*message 是你的广播字符串消息

这对我来说很好

于 2014-08-24T02:38:42.950 回答