javascript - 将 SignalR 与自托管 WCF 结合使用并通过 HTML 客户端使用集线器代理

标签 javascript web-services wcf silverlight signalr

目前,我正在迁移一个实现 WCF 服务的旧项目并通过 Silverlight 客户端使用它。此 WCF 服务使用 Silverlight 自动理解并知道如何处理的双工轮询方法。因此,新的 HTML 客户端将取代该 Silverlight 客户端。

经过一些研究,我找到了一些可行的解决方案:使用长轮询 Web api 或类似的、通过 .NET WebSocket 实现在 WCF 中添加对 WebSocket 的支持以及使用 SignalR。到目前为止,我更倾向于 SignalR,因为我希望尽可能减少对 WCF 的更改。

所以如果我的理解是正确的,当使用SignalR时,它会创建一个Hub代理,在服务器中的服务和客户端之间进行通信。此外,它将负责通信的传输,其中默认情况下可以使用 WebSocket,如果浏览器不支持 WebSocket,则可以回退到其他协议(protocol),并且无需在服务中实现该协议(protocol)即可这样做.

我的问题是,如果我想将 SignalR 与当前的 WCF 服务一起使用,需要采取哪些步骤才能使其正常工作? WCF 服务是一个自主机,在服务器上作为 Windows 服务运行。在 WCF 服务内部,我有不同的子服务端点以及 Silverlight 客户端的当前端点。到目前为止,我已经能够使用 WCF 服务项目添加自托管 SignalR 并且它正在运行,但我不确定下一步是什么。我是否必须为 SignalR 集线器添加单独的端点?

另一个问题是我是否需要对双工服务进行一些修改才能使其与 SignalR 一起使用?另外,WCF服务项目中的客户端项目可以与SignalR分开吗?最后,比较一下在 WCF 服务中添加对 WebSocket 的支持和仅实现 SignalR,从长远来看,哪一种更有优势。

谢谢。

最佳答案

.Net 4.5 在 WCF 中引入了 NetHttpBinding,它自动使用 Websockets 实现双工消息模式,使用 http 实现请求回复消息模式。

有关 Nethttpbinding 的更多信息请参见此处 - https://msdn.microsoft.com/en-us/library/hh674273(v=vs.110).aspx

关于javascript - 将 SignalR 与自托管 WCF 结合使用并通过 HTML 客户端使用集线器代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42282139/

相关文章:

javascript - 如何禁用 yadcf 过滤器选项的自动排序?

javascript - 按频率排序数组

java - Axis2 Soap WS 客户端 : java. lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema

wcf - WCF 服务出现错误 503

wcf - 现有的 SOAP 服务和新的 Angular Web App

visual-studio - 为什么我应该使用 Visual Studio 服务引用而不是 svcutil?

javascript - 有没有办法使用 Node.js EventEmitter 同时向所有监听器发出结束事件?

javascript - 不能在 img 标签内使用 base64 图像吗?

django - Web API 的用途是什么

java - 从 Gradle 依赖项中排除包