【发布时间】:2017-02-16 18:40:13
【问题描述】:
所以目前,我正在迁移一个实现 WCF 服务并通过 Silverlight 客户端使用它的旧项目。此 WCF 服务使用 Silverlight 自动理解并知道如何处理它的双工轮询方法。因此,一个新的 HTML 客户端将取代那个 Silverlight 客户端。
经过一番研究,我找到了一些可行的解决方案:使用长轮询 web api 或类似的,通过 .NET WebSocket 实现在 WCF 中添加对 WebSocket 的支持,以及使用 SignalR。到目前为止,我更倾向于 SignalR,因为我想尽可能减少对 WCF 的更改。
所以如果我的理解是正确的,在使用 SignalR 的时候,它会创建一个 Hub 代理,在服务器中的服务和客户端之间进行通信。此外,它将负责通信的传输,默认情况下它可以使用 WebSocket,如果浏览器不支持 WebSocket,它可以回退到其他协议,并且它可以在服务中不实现协议的情况下这样做.
我的问题是,如果我想将 SignalR 与我当前的 WCF 服务一起使用,有哪些步骤可以使它工作? WCF 服务是在服务器上作为 Windows 服务运行的自宿主。在 WCF 服务内部,我有不同的子服务端点以及 Silverlight 客户端的当前端点。到目前为止,我能够将自托管 SignalR 添加到 WCF 服务项目并且它正在运行,但我不确定下一步是什么。是否必须为 SignalR 集线器添加单独的端点?
另一个问题是我是否需要对双工服务进行一些修改才能使其与 SignalR 一起使用?另外,客户端项目可以与 WCF 服务项目中的 SignalR 分离吗?最后,比较一下在 WCF 服务中添加对 WebSocket 的支持和只实现 SignalR 之间,从长远来看,哪一个会更有优势。
谢谢。
【问题讨论】:
标签: javascript web-services wcf silverlight signalr