WCF 服务中的 SignalR 用于更新网站客户端

Posted

技术标签:

【中文标题】WCF 服务中的 SignalR 用于更新网站客户端【英文标题】:SignalR in WCF service to update web site clients 【发布时间】:2015-04-20 06:57:34 【问题描述】:

使用 SignalR,如果这些客户端不直接使用该服务,是否可以从我的 WCF 服务更新网站客户端?

我在 .NET 中有一个桌面应用程序,它使用 net.TCP 协议在内部使用 WCF 服务。此应用程序根据某些用户操作更改数据库表中的状态字段之一。我想将此更改通知访问托管在同一网络服务器上的不同网站的最终用户。

我尝试了一个 SignalR 示例,如果通知从同一网站的主机发送到其自己的客户端(股票代码示例),则通知工作正常。但就我而言,消息应该从 WCF 服务发送到网站客户端。

【问题讨论】:

【参考方案1】:

IMO 你应该做一个中间跳跃,例如让你的网站暴露一个端点(你选择技术),当你有更改要通知时,你可以发布。只要有更改,您的 WCF 服务就会在此处发布,并且 Web 应用程序将通过向目标客户端广播信息来处理该帖子(可以是全部,也可以只是您在帖子背后使用一些逻辑过滤的一些内容)。我经常使用这种模式,用 HTTP POST 实现它。在 Web 应用程序中实现 SignalR 基础架构不会有任何问题,您的客户端已经连接到该应用程序。

【讨论】:

实际上我想在我的应用程序发生更改时通知。这应该是实时的。我还能使用这种技术吗? 当然。您的桌面应用程序会触发 WCF 服务器处理的更改。在这种情况下,WCF 可以向 Web 应用程序发布一条消息,说明发生了什么变化,然后 Web 应用程序会将其广播给用户。如果愿意,您还可以直接从桌面应用程序将通知发布到网络应用程序。这是基本原则,那么您当然可以根据需要在循环中添加任何排队/冗余基础设施。

以上是关于WCF 服务中的 SignalR 用于更新网站客户端的主要内容,如果未能解决你的问题,请参考以下文章

使用 SignalR、WCF 双工服务和 ASP.Net 通用处理程序向客户端推送通知?

如何通过wcf服务更新宿主项目中的winform控件?

使用 .NET 客户端时的 SignalR 传输

如何通过wcf服务更新宿主项目中的winform控件?

利用SignalR创建即时消息

.NET 4.5 中的 Websocket