因此,当前,我正在迁移一个旧项目,该项目实现了WCF服务,并通过Silverlight Client消费。这项WCF服务使用的是双面轮询方法,Silverlight会自动理解并知道如何处理它。因此,新的HTML客户端将替换Silverlight客户端。
进行了一些研究后,我找到了一些工作解决方案:使用长轮询Web API或类似的方法,通过.NET Websocket实现和使用SignalR增加了WCF中Webocket的支持。到目前为止,由于我想尽可能最大程度地减少WCF的更改,因此我更倾向于信号。
因此,如果我的理解是正确的,则在使用SignalR时,它将创建一个集线器代理,该代理在服务器和客户端中的服务之间通信。此外,它将照顾通信的运输,默认情况下可以使用WebSocket,如果浏览器中不支持WebSocket,则可以使用WebSocket,并返回其他协议,并且可以在服务中实现协议的情况下这样做。
我的问题是,如果我想将SignalR与当前的WCF服务一起使用,那么它可以使其起作用的步骤是什么?WCF服务是一个自助主机,正在服务器上的Windows服务运行。在WCF服务中,我有不同的子服务的终点以及Silverlight客户端的当前端点。到目前为止,我能够使用WCF服务项目添加自我主机信号,并且正在运行,但是我不确定下一步是什么。我必须为SignalR Hub添加一个单独的终点吗?
另一个问题是,我需要对双工服务进行一些修改以使其与SignalR一起使用?另外,可以将客户端项目与WCF服务项目中的SignalR分开吗?最后,比较在WCF服务中添加对WebSocket的支持与实现SignalR之间的支持,这将在长期内具有更好的优势。
谢谢。
.net 4.5在WCF中引入了Nethttpbinding,该WCF使用WebSockets自动用于双工消息模式,而HTTP用于请求回复消息模式。
更多关于nethtpbinding的信息 - https://msdn.microsoft.com/en-us/library/hh674273(v = vs.110).aspx