.NET 4.5 WebSockets与SignalR

时间:2012-03-01 21:42:32

标签: asp.net websocket signalr

我见过signalR vs html5 websockets for asp.net MVC chat application但它并没有100%回答我的问题,因为它基于HTML5 WebSockets,微软可能已经在.NET 4.5中使用他们的WebSocket对象进行了扩展。

我想知道WebSocket功能是否确实与SignalR完全相同,并且在WebSocket不可用时又回退到长轮询?当然,微软会采用与SignalR相同的技术来实现这项技术吗?

编辑:

对于其他任何想知道这一点的人,我发现这条评论最有助于理解这个场景以及为什么我会使用SignalR:

  

嗯,他们不是真的。到目前为止IIS和ASP.NET没有   任何内置在支持的WebSockets中的东西,所以SignalR项目必须这样做   自己建立。现在微软正在提供管道   SignalR可以轻松切换到使用Microsoft的实现,   要么是自己的,要么是自己的。 SignalR是一个   抽象超过实现细节,WebScockets类就是   实施细节

3 个答案:

答案 0 :(得分:37)

我认为SignalR是要走的路,并且无论如何都将成为.NET本身的一部分(并且可能扩展/合并/替换web-socket支持)。它在支持时使用Web套接字,并且在不支持的情况下使用一致的客户端轮询黑客,因此,这是最佳选择。

<强>更新

由于这个答案仍然被提升,值得一提的是SignalR现在正式成为ASP.NET的一部分。

检查http://asp.net/signalr

更新:.NET Core

正如@yazanpro在评论中指出的那样,SignalR也被添加到.NET Core中。

它可用in .NET Core 2.1,并且还有official documentation

答案 1 :(得分:25)

  1.   

    我想知道WebSocket功能是否确实与SignalR完全相同,并且在WebSockets不可用时又回退到长轮询?

    WebSockets是一种独立于其他通信技术的新协议。来自RFC

      

    该技术的目标是提供基于浏览器的机制   需要与服务器进行双向通信的应用程序   不依赖于打开多个HTTP连接例如,使用   XMLHttpRequest或s和长轮询)。

  2.   

    当然,微软会采用与SignalR相同的技术来实现这项技术吗?

    如果他们想要符合规范他们不会。当然,没有什么可以阻止微软开发类似于SignalR的更高级别的API,这样可以抽象出通信细节并提供优雅的回退。然而,假设的API可能建立在WebSocket类之上而不是替换它。

答案 2 :(得分:8)

SignalR使用OWIN,如果浏览器支持Web套接字,则使用WebSockets连接;如果浏览器不支持WebSockets,则使用长轮询。