ASP.NET SignalR 是为ASP.NET开发人员提供的一个库,能够简化开发人员将实时web功能添加到应用程序中,实时web功能是指:当所链接的全部客户端在可用状况下,服务器代码能够当即向其推送内容,而不是让服务器等待客户端请求数据。javascript
SignalR能够将任何种类的“实时web功能”添加到您的asp.net程序中。虽然咱们常常把聊天应用做为最经常使用的的例子,若是用户是经过刷新界面或经过长轮询来,来查看新的数据,能够考虑使用SignalR,其余应用场景包括像监视系统、仪器仪表、工做进度更新、实时表单、协做应用程序(例如同时编辑文档)等待java
SignalR还适合于全新类型的web应用程序,特别是须要从服务器高频率更新的应用程序,例如实时游戏,一个好的例子,请参阅ShootR游戏。web
SignalR提供一个简单API用于出建立服务器端到客户端的远程过程调用(RPC),以便从服务器端.net代码中调用远程客户端浏览器的(或其余远程客户端)javascript函数。SignalR还包括用于管理链接和为链接分组的API。浏览器
SignalR会自动管理链接,并像聊天室同样能够向全部客户端同时发送消息。也能够向特定客户端发送消息。客户端和服务器的链接是持久性的,不像HTTP链接,每一个通讯都要从新创建链接。服务器
SignalR支持“服务器推送功能”,即服务器可使用远程过程调用(RPC)来调用浏览器的客户端代码,而不使用目前WEB经常使用的“请求-响应”模式。websocket
SignalR是开源的,能够经过GitHub访问。asp.net
SignalR和WebSocketsocket
SignalR会在可能的状况下使用新的websocket传输方式,并在须要时回退到旧的传统传输方式。虽然您仍然可使用websocket编写应用程序,但使用SignalR意味着您有许多现成的额外功能可用,而无需本身实现这些功能。而更重要的是,您能够利用SignalR编写应用程序以利用WebSocket,而无需担忧为旧的客户端单首创建代码,SignalR还使您没必要担忧WebSocket的更新。由于SignalR会持续更新以支持基础传输协议的改变,为您的应用程序提供一致的接口以使用不一样的WebSocke版本。固然您能够建立只使用WebSocket的解决方案。SignalR为您提供了可能须要自行编码的全部功能。例如回退到其余的传输方式以及修订您的应用程序以更新到websocket实现。函数
传输和回退编码
SignalR是对一组在构建服务器和客户端的“Real-Time”功能所须要使用的传输技术的抽象。SignalR传输首先以HTTP发起请求,若是WebSocket可用的化,则升级到WebSocket链接,WebSocket是SignalR的理想链接方式,由于它能最高效的使用服务器内存、有最低的延迟,并且有最主要的功能(如服务器和客户端之间的全双工通讯),但它也有最严格的环境需求:WebSocket要求服务器是Windows Server 2012或Windows 8以及.net framework 4.5 若是不符合这些要求,SignalR将使用其余传输方式创建链接。