SignalR 学习

  ASP.NET SignalR 是为ASP.NET开发人员提供的一个库,可以简化开发人员将实时web功能添加到应用程序中,实时web功能是指:当所连接的所有客户端在可用情况下,服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求数据。

  SignalR可以将任何种类的“实时web功能”添加到您的asp.net程序中。虽然我们经常把聊天应用作为最常用的的例子,如果用户是通过刷新界面或通过长轮询来,来查看新的数据,可以考虑使用SignalR,其他应用场景包括像监视系统、仪器仪表、工作进度更新、实时表单、协作应用程序(例如同时编辑文档)等待

  SignalR还适合于全新类型的web应用程序,特别是需要从服务器高频率更新的应用程序,例如实时游戏,一个好的例子,请参阅ShootR游戏。

  SignalR提供一个简单API用于出创建服务器端到客户端的远程过程调用(RPC),以便从服务器端.net代码中调用远程客户端浏览器的(或其他远程客户端)javascript函数。SignalR还包括用于管理连接和为连接分组的API。

  SignalR会自动管理连接,并像聊天室一样可以向所有客户端同时发送消息。也可以向特定客户端发送消息。客户端和服务器的连接是持久性的,不像HTTP连接,每个通信都要重新建立连接。

  SignalR支持“服务器推送功能”,即服务器可以使用远程过程调用(RPC)来调用浏览器的客户端代码,而不使用目前WEB常用的“请求-响应”模式。

  SignalR是开源的,可以通过GitHub访问。

  SignalR和WebSocket

  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将使用其他传输方式建立连接。

原文地址:https://www.cnblogs.com/zhangqingquan/p/3656148.html