Welcome 微信登录

首页 / 网页编程 / ASP.NET / 什么是SignalR

什么是SignalR2014-06-04什么是SignalR?

ASP.NET SignalR是为简化开发开发人员将实时web内容添加到应用程序过程而提供的类库。实时web功能指 的是让服务器代码可以随时主动推送内容给客户端,而不是让服务器等待客户端的请求(才返回内容)。

所有"实时"种类的web功能都可以使用SignalR来添加到你的ASP.NET应用程序中。最常用的例子 有聊天室,但我们能做的比这要多得多。考虑以下情况:用户需要不停的刷新网页来看最新的数据;或者在页 面上通过实现长轮询来检索新数据(并显示),那你就可以考虑使用SignalR来实现了。比如:仪表板及监视 型应用程序;协作型应用程序(如多人同时对文档进行编辑);作业进度更新及实时呈现表单等。

SignalR也适合新型的,需要从服务器上进行高频率更新的web应用程序,例如实时游戏。这里有一个好例 子:ShoorR。

SignalR提供了一个简单的API用户创建服务器到客户端的远程过程调用(RPC),可以方便地从服务器端 的.Net代码中对客户端浏览器及其他客户端平台中的的JS函数进行调用。SignalR还包括了用于管理连接(例 如:连接和断开事件)及连接分组。

SignalR可以自动对连接进行管理。并让你发送广播消息到所有已连接的客户端上,就像一个聊天室一样。 当然除了群发外,你也可以发送到消息到特定的客户端。客户端和服务器的连接是持久的,不像传统的每次通 信都需要重新建立连接的HTTP协议。

SignalR支持“服务器推送”功能,即服务器代码可以通过使用远程过程调用(RPC)来调用浏览 器中的客户端代码,而不是当前在web上常用的请求-相应处理模型。

SignalR的应用可以使用服务总线,SQL SERVER或者Redis来扩展到数以千计的客户端上。

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

SignalR和WebSocket

SignalR使用WebSocket传输方式——在可能的情况下。并且会自动切换到旧的传输方式(如 HTTP长连接)。你当然可以直接使用WebSocket来编写你的应用程序,但使用SignalR意味着你将有更多的额外 功能而无需重新发明轮子。最重要的是,你可以将注意力关注在业务实现上,而无需考虑为旧的客户端单独创 建兼容代码。SignalR还能够使你不必担心WebSocket的更新,因为SignalR将会持续更新以支持变化的底层传 输方式,跨不同版本的WebSocket来为应用程序提供一个一致的访问接口。

当然,你可以创建只使用WebSocket传输的解决方案,SignalR提供了你可能需要自行编写代码的所有功能 ,比如回退到其他传输方式及针对更新的WebSocket实现来修改你的应用程序。