.NET 4.5 WebSockets与SignalR

Chr*_*xon 54 asp.net websocket signalr

我已经看到了用于asp.net MVC聊天应用程序的signalR vs html5 websockets,但它没有100%回答我的问题,因为它基于HTML5 WebSockets,微软可能已经在.NET 4.5中使用他们的WebSocket对象进行了扩展.

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

编辑:

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

嗯,他们不是真的.到目前为止,IIS和ASP.NET没有内置任何受支持的WebSockets,因此SignalR项目必须自己构建它.现在微软正在提供管道,SignalR可以轻松切换到使用微软的实现,无论是自己的还是替代.SignalR是一个实现细节的抽象,WebScockets类是实现细节

Mel*_*igy 40

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

更新:

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

检查http://asp.net/signalr

更新:.NET Core

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

在.NET Core 2.1中可用,并且还有官方文档.


R0M*_*RMY 28

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

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

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

  2. 当然,微软在采用这种技术的方法中会采用与SignalR相同的技术吗?

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

  • @thedixon嗯,他们不是真的.到目前为止,IIS和ASP.NET没有内置任何受支持的WebSockets,因此SignalR项目必须自己构建它.现在微软正在提供管道,SignalR可以轻松切换到使用微软的实现,无论是自己的还是替代.SignalR是对实现细节的抽象,WebScockets类**是实现细节. (3认同)
  • 我认为OP指的是:http://msdn.microsoft.com/en-us/library/system.net.websockets.websocket%28v=vs.110%29.aspx (2认同)

小智 8

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