.NET 4.5 WebSockets vs SignalR



我看到过用于asp.net MVC聊天应用程序的signalR与html5 websockets,但它并不能100%回答我的问题,因为它是基于html5 WebSocket的,微软可能在.net 4.5中通过其WebSocket对象扩展了html5 WebSSocket。

我想知道WebSocket功能是否真的和SignalR一样,并在WebSocket不可用时返回到长轮询?微软肯定会在这项技术的方法中采用与SignalR相同的技术吗?

编辑:

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

事实并非如此。到目前为止,IIS和ASP.NET还没有任何内置的支持WebSockets的东西,所以SignalR项目必须自己建造。现在微软正在提供管道SignalR可以很容易地转换为使用微软的实现,除了它们自己之外或者代替它们自己。SignalR是对实现细节的抽象,WebScockets类是实施细节

我认为SignalR是未来的发展方向,而且无论如何都将成为.NET本身的一部分(并可能扩展/合并/替换web套接字支持)。它在支持时使用网络套接字,在不支持时使用一致的客户端轮询破解,所以,这是可行的。

更新:

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

检查http://asp.net/signalr

更新:.NET Core

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

它在.NET Core 2.1中提供,并且有官方文档。

  1. 我想知道WebSocket功能是否真的和SignalR一样,并在WebSocket不可用时返回到长轮询?

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

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

  2. 微软肯定会在这项技术的方法中采用与SignalR相同的技术吗?

    如果他们想遵守规范,他们就不会。毫无疑问,没有什么可以阻止微软开发类似SignalR的更高级别的API,它可以抽象通信细节并提供优雅的后退。然而,假设的API可能会建立在WebSocket类之上,而不是取代它

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

最新更新