SignalR 是一个面向 ASP.NET 开发人员的库,可简化将实时 web 功能添加到应用程序的过程。 实时 web 功能是让服务器代码将内容推送到链接的客户端当即可用,而不是让服务器等待客户端请求新数据的能力。html
SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件能够借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话经过永久链接进行,容许客户端向服务器发送多个消息,并容许服务器作出相应答复,值得注意的是,还容许服务器向客户端发送异步消息。是一个彻底基于客户及服务器端解决方案,它是以JS做为客户端和ASP.NET做为服务端来建立这类的应用。html5
传统HTTP采用的是你们熟知的“拉模式”,即客户端发出的每次请求,服务端都是被动处理。此场景下客户端是老大,很显然只有一方主动,操做与处理起来就没那么完美。为了能让服务端也能主动,html5的出现让这种变得可能,你们知道html5中有两种主动模式。第一种叫作websockect,WebSockets是Html5提供的新的API,能够在Web网页与服务器端间创建Socket链接,它是基于tcp模式的双工通信。还有一种叫作SSE,也就是客户端来订阅服务器的一种事件模型。在html5出来以前,若是要作到服务器主动,咱们只能采用变相的longpool和iframe流勉强实现。这就至关于要实现服务端的主动就有了4种方案。SignalR的出现是咱们每位开发者的福音。它对上面四种方案进行了高度的封装,也就是说signalR会在这四种技术中根据浏览器和服务器设置采起最优的一种模式。git
对于.NET开发者的福音,.NET平台为咱们提供了一种简洁高效智能的实时信息交互技术->SignalR,它集成了上述数种技术,并能根据配置自动或手动选择其最佳应用。github
SignalR可用于将任何类型的"实时"web 功能添加到 ASP.NET 应用程序。 好比最经常使用的即时消息、聊天。 只要用户刷新 web 页面以查看新数据或页面实现长轮询若要检索新数据,能够考虑对它使用 SignalR。 包括仪表板和监视应用程序,协做应用程序 (如同时进行编辑的文档),做业的进度更新到并实时窗体。web
SignalR还能够用于须要高频率从服务器中更新的全新类型weB应用程序,例如在线聊天、实时游戏、天气、股票信息更新等实时应用程序。chrome
SignalR 提供一个简单的 API,用于建立从服务器端.NET 代码中调用 JavaScript 函数在客户端浏览器 (和其余客户端平台) 的服务器到客户端的远程过程调用 (RPC)。 SignalR 还包括链接管理的 API (例如,链接和断开链接事件),并对链接进行分组。浏览器
SignalR自动处理链接管理,并容许您同时将消息广播到全部链接的客户端,如聊天室。 还能够将消息发送到特定的客户端。 客户端和服务器之间的链接是持久性的。服务器
SignalR与经常使用的Web浏览器上请求-响应模式不一样,它支持"服务器推送"功能,能够调用远程过程调用 (RPC)。微信
SignalR应用程序能够横向扩展到数千个客户端使用服务总线、 SQL Server 或Redis。websocket
最重要的是SignalR 是开放源代码,有兴趣的朋友能够研究SignalR
前面对SignalR已经有了一个很是全面而清晰的认识,对于SignalR 和 WebSocket关系,咱们须要看下什么是WebSocket?
WebSocket是HTML5提供的一种在单个 TCP 链接上进行全双工通信的协议,目前chrome、Firefox、Opera、Safari等主流版本均支持,Internet Explorer从10开始支持。另外由于WebSocket 提供浏览器一个原生的 socket实现,因此直接解決了 Comet 架构很容易出错的问题,而在整個架构的复杂度上也比传统的实现简单得多。
WebSocket本质上是一个基于TCP的持久化协议,相对于HTTP这种非持久的协议来讲,它可以更好的节省服务器资源和带宽,而且真正实现实时通讯。其优势在前面咱们已经作了对比,最大的缺点就是对旧版本浏览器不支持。至此SignalR的出现,完美的解决了种浏览器的问题,SignalR不只能够实现WebSocket的全部功能,还对旧版本浏览器作了支持。SignalR可自动或手动选择使用WebSocket传输仍是其余替代方式传输,以实现实时Web技术。
SignalR简化了构建实时应用的过程,它包括了一个Asp .Net服务器端库和一个Js端库,集成了数种常见的消息传输方式,如long polling,WebSocket,并提供相应的Api供开发人员选择如何调用,帮助其能够简单快速地实现客户端与服务器端相互间的实时通讯。
当环境条件合适时,SignalR将WebSocket做为底层传输方式的优先实现,固然,它也能很高效地回退到其余技术。同时,SignalR提供了很是良好的Api以供远程调用(RPC) 浏览器中的js代码。
当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当浏览器不支持时WebSockets时,SignalR将使用其它技术来保证达到相同效果。
浏览器和客户端之间想要进行WebSocket通讯的话,从一开始的握手阶段,就要从HTTP协议升级为WebSocket协议,这是服务器根据WebSocket发送的请求包决定的。
一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,你们能够经过下面的地址了解详情。
RDIFramework.NET官方网站:http://www.rdiframework.net/
RDIFramework.NET官方博客:http://blog.rdiframework.net/
同时须要说明的,之后的全部技术文章以官方网站为准,欢迎你们收藏!
RDIFramework.NET框架由海南国思软件科技有限公司专业团队长期打造、一直在更新、一直在升级,请放心使用!
欢迎关注RDIFramework.net框架官方公众微信(微信号:guosisoft),及时了解最新动态。
扫描二维码当即关注