ASP.NET SignalR是什么
ASP.NET SignalR是什么一、什么是SignalR
1、ASP.NET SignalR是用于帮助ASP.NET开发者简化实时Web交互。实时Web交互意味着服务器端主动推送内容至处于链接状态的客户端,而不用让服务器等客户端请求数据。
2、SignalR 将与客户端进行实时通信带给了ASP .NET 。当然这样既好用,而且也有足够的扩展性。以前用户需要刷新页面或使用Ajax轮询才能实现的实时显示数据,现在只要使用SignalR,就可以简单实现了。最重要的是您无需重新建立项目,使用现有ASP .NET项目即可无缝使用SignalR。
3、SignalR可用于添加各种需要实时交互的场景,最常见的就是聊天室。
4、SignalR自动管理客户端连接,允许服务端向所有客户端推送信息,如聊天室。也可以向特定的客户端发送信息。客户端与服务商之间的链接是持久化的,不像每次都开启一个新链接的传统HTTP连接方式。
5、SignalR可以通过服务总线、SQL SERVER数据库或Redis扩容至数千客户端。
6、SignalR是开源的,可以通过Github获取。
7、signalr可以用来添加任何形式的“实时通信”功能到您的ASP.NET应用程序。聊天是经常被用来作为一个应用例子,当然你可以做更多的事情。
8、用户常常通过刷新网页来查看新数据,或者页面支持长轮询来检索新的数据,使用signalr机制中支持这个方式,但它更智能更强大友好。
9、SignalR同时支持新类型的网络应用情况:需要高频度从服务端更新的情况(如实时游戏)
10、SignalR提供了更加便捷简单的API,这些API可以用来创建服务端和客户端之间的远程调用;这些API可以:连接管理(例如,连接和断开连接的事件)、对连接分组、和访问功能授权。
二、支持的服务器操作系统
SignalR服务端组件可以被部署在一下的服务端和客户端操作系统中.注意使用WebSockets时,SignalR需要Windows Server 2012 或者Windows 8
1、Windows Server 2012
2、Windows Server 2008 r2
3、Windows 8
4、Windows 7
5、Windows Azure
三、IIS需要的版本
当SignalR部署在IIS中,需要下面的版本支持。注意如果使用在我们自己的操作系统上,如开发所用的环境(Windows 8 or Windows 7),所有版本的IIS和Cassini不应该被使用,因为这里有一个10同时并发的限制,因为连接是短暂、频繁重新建立的、且不会立即被dispose,所以很快就会达到限制。IIS Express可以被使用在一般的操作系统上。
同时注意SignalR使用WebSocket时,IIS 8 或者 IIS 8 Express是你需要的,服务器必须用Windows 8, Windows Server 2012, 或者更高,同时WebSocket必须在IIS中可用。
1、IIS 8 或者IIS 8 Express.
2、IIS 7 和 7.5. 需要支持 extensionless URLs .
3、IIS 必须跑在集成模式下; 经典模式是不行的.
四、SignalR和WebSocket的关系
1、signalr会自动地使用websocket通信(只要条件允许),条件不满足的时候也会自动使用其他旧的传输方式。当然你可以直接让你的程序直接使用WebSocket.
2、使用signalr意味着原先你需要自己花精力做的工作不需要再自己做了,因为它已经为你做了。最重要的是,它会持续更新跟进WebSocket技术,所以你不用担心协议变化这类事情.
3、signalr是对客户端和服务器之间通信方式的一个抽象。一个signalr启动时使用HTTP连接,然后当环境允许就会直接提升到WebSocket连接。
4、WebSocket是SignalR的理想通信方式,因为WebSocket使服务器的内存得到最有效的利用,同时WebSocket具有最低的延迟,并拥有最底层特征(如客户端和服务器之间的全双工通信),但WebSocket也有最严格的要求:WebSocket需要服务器使用Windows Server 2012或Windows 8,和.NET框架4.5。如果不能满足这些要求,signalr将尝试使用其他通讯方式进行连接。
五、SignalR决定使用具体哪种通信方式
1、如果浏览器<=Internet Explorer 8,用长轮询的方式
2、如果配置中指定了使用jsonp,则会使用长轮询的方式
3、如果需要创建跨域连接,将会如使用WebSocket,如果以下条件满足的话 (否则用长轮询)
(1)、客户端支持WebSocket
(2)、服务端支持WebSocket
(3)、客户端支持Cross-Origin Resource Sharing