实时通讯系列目录篇之SignalR详解

一. 简单说几句

  最早使用SignalR的时候大约是两年前了,记得当时是一个OA中消息的实时提醒,轮询的方式有点耗资源,WebSocket写起来又比较麻烦,最终选择了SignalR,当时是什么版本已经记不清了,反正现在最新的是2.3.0(这里指 .Net FrameWork下,而非Core下),这期间又陆续的在几个项目中用到SignalR,感觉还不错,使用起来也比较便捷,直到今年6月份,再次接到一个OA项目,需要用到SignalR,也是借着这次机会把自己这期间的研究的一些东西和朋友们分享一下,也希望得到朋友们在使用上的一些建议。
  这次写这个系列,是最后做的这个目录,原计划两个周写完,但计划终究赶不上变化,到今天为止,已经三个多周,但前面的六篇文章已经告一段路,这期间,不少朋友建议我使用.Net Core下的SignalR,我粗略的看了看,Core下的SignalR在使用上差别不是太大,这里也是个人的精力和能力有限,在每天七个半小时工作之外,尽可能的去做一些更有意思的事,Core下的SignalR也在后面的计划中,届时还希望朋友们多多支持。
  该系列后面的计划:
    ①:结合业务整合个完整的案例进去。
    ②:详细研究研究Core下的SignalR。
GitHub地址:https://github.com/SignalR/SignalR

    

二. 整体介绍

   该系列从原生Websocket说起,然后进行Signalr的基本介绍,然后PersistentConnection模式,然后介绍Signalr的灵魂Hub模型以及一些零散知识点,最后以SignalR的一种分布式部署方案结束该系列。

  作为目录篇,这里还是有必要再啰嗦一些什么是SignalR了,看过我之前文章的朋友们可以直接跳过了。

  SignalR是微软的一个开源项目,为客户端和服务器端实时通讯的问题提供了很好的解决方案,通过简单的配置和API调用,即可完成相应的通讯功能的开发。

  SignalR对目前为止几类主流的传输协议进行了封装,让浏览器自行选择可以兼容的版本(当然也可以自行指定),这样就解决了开发者使用原生WebSocket时候的痛点了。

SignalR大一统:

  它封装了 WebSocket、ForeverFrame、ServerSentEvents、LongPolling四种主要的传输协议。

  ① WebSocket:它是HTML5提供的一种在单个 TCP 连接上进行全双工通讯的协议。

  ② ForeverFrame(永久帧):它适用于IE浏览器,是在页面中插入一个隐藏的iframe,利用其src属性在服务器和客户端之间创建一条长链接,服务器向iframe传输数据(通常是HTML,内有负责插入信息的javascript),来实时更新页面。

  ③ SeverSentEvents(服务器发送事件,也成EventSourse):顾名思义。

  ④ longPolling(Ajax长轮询):长轮询是对轮询的改进,客户端通过请求连接到服务器,并保持一段时间的连接状态,直到消息更新或超时才返回Response并中止连接,可以有效减少无效请求的次数。

 

三. 系列章节

   下面我们将通过以下几个章节,系统的介绍一下SignalR中各种知识点,各种配置,由WebSocket原生写法起,以一个聊天室案例为基础,贯穿整个系列,欢迎广大博友前来交流、指正、学习。

        第一节:.Net版基于WebSocket的聊天室样例

        第二节. SignalR开篇以及如何指定传输协议

        第三节:SignalR之PersistentConnection模型详解(步骤、用法、分组、跨域、第三方调用)

        第四节:SignalR灵魂所在Hub模型及再探聊天室样例

        第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

        第六节:SignalR完结篇之依赖注入和分布式部署

        第七节:敬请期待

        第八节:敬请期待

        第九节:敬请期待

 

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 

转载于:https://www.cnblogs.com/yaopengfei/p/9351203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SignalR 是 ASP.NET 团队正在开发的一个 Microsoft .NET Framework 库和 jQuery 插件,可能包括在以后版本的 ASP.NET 平台中。 它提供了一些前景极为光明的功能,而这些功能正是 .NET Framework 当前不曾具有的,并且是越来越多的开发者所需要的。 SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。它和AJax类似,都是基于现有的技术。本身是一个复合体。一般情况下,SignalR会使用Javascript的长轮询( long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。当然SignalR也使用了服务端的任务并行处理技术以提高服务器的扩展性。 任何一个技术的出现都是为了解决特定的问题。SignalR也不例外。我们知道网站开发中最长见到的一个功能就是在线聊天室。现在的网上的大部分在线聊天室都是基于2种技术,1.AJAX 2.Flash. 聊天室要解决最大的问题就是 消息的推送。当N个在线用户 同时加入一个聊天室时,1个用户发送消息,服务端就要把这个消息转发给特定的人。 之前的技术都是通过Javascript来不停地发送请求来轮训 服务端的新的消息。这种定期发送Ajax请求给服务器的方式,在用户很大的情况下给服务器带来很大的压力。 WebSockets这个技术的出现,很好地解决了这个问题,恰恰支持可以主动推送消息,SignalR 支持WebSockets。我们可以看到未来网络应用中会大量出现自己吃WebSockets的程序,而SignalR应该也会广泛在ASP.NET 网站中出现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值