一. 简单说几句

  最早使用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 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 

实时通讯系列目录篇之SignalR详解的更多相关文章

  1. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  2. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  3. 入木三分学网络第一篇--VRRP协议详解第一篇(转)

    因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静 ...

  4. 构建安全的Xml Web Service系列之wse之错误代码详解

    原文:构建安全的Xml Web Service系列之wse之错误代码详解 WSE3.0现在还没有中文版的可以下载,使用英文版的过程中,难免会遇到各种各样的错误,而面对一堆毫无头绪的错误异常,常常会感到 ...

  5. mysql基础篇 - SELECT 语句详解

    基础篇 - SELECT 语句详解         SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...

  6. SpringBoot系列(十二)过滤器配置详解

    SpringBoot(十二)过滤器详解 往期精彩推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件 ...

  7. [js高手之路] es6系列教程 - 对象功能扩展详解

    第一:字面量对象的方法,支持缩写形式 //es6之前,这么写 var User = { name : 'ghostwu', showName : function(){ return this.nam ...

  8. [转帖]Linux系列之SAR命令使用详解

    Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...

  9. Java线程通讯方法之wait()、nofity() 详解

    Java线程通讯方法之wait().nofity() 详解 本文将探讨以下问题: synchronized 代码块使用 notify()与notifyAll()的区别 Java wait(),noti ...

随机推荐

  1. ngnix简单使用

    NGINX是一个高性能HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,是由伊戈尔·塞索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公版发布于2004年10月4日 ...

  2. 本地服务器硬件信息获取指令wmic

    获取BIOS序列号 wmic bios list full | find "SerialNumber" SerialNumber=P50168VB 获取CPUID(WIN32_PR ...

  3. java优先级队列的使用 leecode.703.数据流中的第K大元素

    //设计一个找到数据流中第K大元素的类(class). //注意是排序后的第K大元素,不是第K个不同的元素. class KthLargest { private PriorityQueue<I ...

  4. Fix: Unable to terminate process ‘Access is denied’ 杀进程,关服务

    https://appuals.com/fix-unable-to-terminate-process-access-is-denied/ 我 Process Hacker (方法3),成功杀掉: 阿 ...

  5. 我的第一个python web开发框架(39)——后台接口权限访问控制处理

    前面的菜单.部门.职位与管理员管理功能完成后,接下来要处理的是将它们关联起来,根据职位管理中选定的权限控制菜单显示以及页面数据的访问和操作. 那么要怎么改造呢?我们可以通过用户的操作步骤来一步步进行处 ...

  6. 数据库MySQL和Redis实践

    1.关于数据库设计的那些事 2.MySQL 3.Redis

  7. SQL COUNT() 函数

    COUNT() 函数返回匹配指定条件的行数. SQL COUNT() 语法 SQL COUNT(column_name) 语法 COUNT(column_name) 函数返回指定列的值的数目(NULL ...

  8. Django学习笔记(2)--视图函数

    用pycharm打开FDJ项目 URL分发器 视图: 视图一般都写在app的view,py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了请求过来的所有 ...

  9. day20 hashlib、hmac、subprocess、configparser模块

    hashlib模块:加密 import hashlib# 基本使用cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8'))print(cipher.h ...

  10. Spring第一天——入门与IOC

    大致内容 spring基本概念 IOC入门 [17.6.9更新],如何学习spring? 掌握用法 深入理解 不断实践 反复总结 再次深入理解与实践 一.Spring相关概念  1.概述: Sprin ...