SignalR技术介绍

SignalR是一种开源的.NET库,它为开发者提供了一种简便的方法,将实时Web功能添加到应用程序中。通过SignalR,服务器代码可以即时推送内容到连接的客户端,而不需要客户端主动请求新数据,这使得网站看起来更加“活跃”。

SignalR是什么?

SignalR是一个为.NET开发者设计的库,它使得在应用程序中添加实时Web功能变得简单。现在,可以让服务器代码在内容可用时立即推送到连接的客户端,而不是等待客户端请求新数据。这将使网站看起来更加“活跃”。

SignalR的应用场景

SignalR可以用于为ASP.NET应用程序添加任何类型的“实时”Web功能。任何时候,如果用户刷新网页以查看新数据,或者页面实现了“长轮询”来检索新数据,那么它就是使用SignalR的候选者(例如仪表盘、监控应用程序、协作应用程序、工作进度更新和实时表单)。

SignalR的API

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

连接管理

SignalR为处理连接管理。可以同时向所有连接的客户端广播消息,或者针对特定客户端。客户端和服务器之间的连接是持久的,不像传统的HTTP连接,后者每次通信都需要重新建立。

远程过程调用(RPC)

SignalR使用远程过程调用(RPC)而不是请求-响应模型,允许服务器代码调用浏览器中的客户端代码。

可扩展性

SignalR应用程序可以扩展到成千上万的客户端,使用Service Bus、SQL Server或Redis。

SignalR和WebSocket

SignalR尽可能使用新的WebSocket传输。通过使用SignalR而不是直接编写自己的WebSocket代码,可以节省大量时间,不需要重新发明轮子,特别是在支持旧客户端方面。SignalR也会继续更新以支持WebSocket的变化,这意味着代码维护量会减少。

传输和回退

SignalR连接最初是HTTP,如果可用,则提升为WebSocket连接。WebSocket是SignalR的理想传输方式,因为它最有效地利用了服务器内存,具有最低的延迟,并且具有最多的底层特性(例如客户端和服务器之间的全双工通信)。

连接和Hubs

SignalR API包含两种客户端和服务器之间通信的模型:持久连接和Hubs。一个连接代表一个简单的端点,用于发送消息。这些消息可以发送给单个客户端、一组客户端或广播给所有客户端。持久连接API允许开发者访问SignalR公开的低级通信协议。使用连接通信模型的开发者如果使用过基于连接的API,如Windows Communication Foundation (WCF),会感到熟悉。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485