一步一步学习SignalR进行实时通信_1_简单介绍
一步一步学习SignalR进行实时通信\_1_简单介绍
SignalR
前言
本来前几个月想写一系列的关于SignalR的文章,但是由于在做项目,时间非常的紧急,花了1天的时间大致了解了下SignalR,并实现了个在线聊天的小功能,本来记录一系列关于SignalR的文章,没想到写了MVC5使用SignalR进行双向通信(1)之后就停下来了,现在稍微空闲点,抽点时间来完整的学习SignalR。在园子里也有许多关于SignalR的文章,如此篇简单的介绍了下SignalR,并实现了个实时聊天的功能,但是实际上SignalR还有许许多多的东西能够被我们挖掘到,我希望能记录下我详细学习的过程。
SignalR介绍
SignalR是一个框架,它能够有助于我们搭建一个实时互动、多用户的应用程序。它的一个很大的优点是对开发人员是透明的,它会自己决定使用那个技术(长轮询、持久性框架、WebSockets等)最好,并自动管理连接和断开连接。详情请看园子另一篇文章。

SignalR为我们提供了2个不同的抽象级别,分别为persistent connections和Hubs

长篇大论不是我的风格,我更专注于某个技术能实现怎样的功能,我在这里简单的提一下,有这样2个东西存在,这会有助于对SignalR后续的学习。
支持的平台
在此篇文章讲的非常详细了,这里也没必要再重复一篇
相关说明
我们使用的是Signal2,与第一个版本可能会有所不同,这里不做讨论。
OWIN
在这里我们都是基于OWIN来是实现的。OWIN大致是如下的结构:
实现了SignalR的结构如图所示:
安装SignalR后相关的程序集
1. OWIN结构
对比起来应该就很好理解了,OWIN实现了一个通用的接口,而SignalR则是根据此接口要求搭建的一套框架,类似的有WebAPI。
看过这两幅图片,那么对OWIN的概念应该就很好理解了。
从第一幅图可以看出,OWIN主要由五部分组成:Host、Server、Middleware、Web framework以及Application。
2.详细介绍
在看第二幅图和第三幅图,第三幅图是安装完成SignalR后,这6个包是与SignalR和Owin相关的
- Host:请求是在哪里执行的,一般来说在IIS上,可以自己搭建在自己控制台应用程序上,具体方法这里有说明。
- Server:即
Microsoft.Owin.Host.SystemWeb或者Microsoft.Owin.HttpListener,它的作用是打开一个端口与客户端进行通信。 - Middleware:即为Misrosoft.AspNet.SignalR.XXX这是我们所安装的SignalR,如果安装的WebAPI,则可能为Misrosoft.AspNet.WebApi.XXX,他是实现了Owin的一系列框架。
- Web framework:如我们现在介绍的SignalR或者Web API等。
- Application:即为我们的项目,可以是MVC、web form或者wpf等。
我的理解是这样的,SignalR有一个核心的服务叫
Microsoft.AspNet.SignalR.Core,它通过一个类似于适配器概念Microsoft.AspNet.SignalR.SystemWeb,实现了OWIN的接口,从而进行协同工作。
结束语
本章对于SignalR的大致介绍就到这里,本来不想写概念性的东西,毕竟我是一个注重实现的人,学习有2种方法一种是深入浅出式的,另一种是先实现在深入,以前我可能是第二种形式,但是对于程序员来说不求甚解也不失为一种好办法,毕竟接触一个新的东西,直接深入还是非常困难的。
对着本章有什么不理解也没有大问题,在后面会一步步通过代码实现一些功能。
本文发布至作业部落
参考文献
ASP.NET SignalR系列
SignalR Programming in Microsoft ASP.NET pdf 下载
一步一步学习SignalR进行实时通信_1_简单介绍的更多相关文章
- 一步一步学习SignalR进行实时通信_8_案例2
原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建 ...
- 一步一步学习SignalR进行实时通信_9_托管在非Web应用程序
原文:一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信\_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信_9_托管在非We ...
- 一步一步学习SignalR进行实时通信_7_非代理
原文:一步一步学习SignalR进行实时通信_7_非代理 一步一步学习SignalR进行实时通信\_7_非代理 SignalR 一步一步学习SignalR进行实时通信_7_非代理 前言 代理与非代理 ...
- 一步一步学习SignalR进行实时通信_5_Hub
原文:一步一步学习SignalR进行实时通信_5_Hub 一步一步学习SignalR进行实时通信\_5_Hub SignalR 一步一步学习SignalR进行实时通信_5_Hub 前言 Hub命名规则 ...
- 一步一步学习SignalR进行实时通信_6_案例
原文:一步一步学习SignalR进行实时通信_6_案例 一步一步学习SignalR进行实时通信\_6_案例1 一步一步学习SignalR进行实时通信_6_案例1 前言 类的定义 各块功能 后台 上线 ...
- 一步一步学习SignalR进行实时通信_4_Hub
原文:一步一步学习SignalR进行实时通信_4_Hub 一步一步学习SignalR进行实时通信\_4_Hub SignalR 一步一步学习SignalR进行实时通信_4_Hub 前言 创建Hub 配 ...
- 一步一步学习SignalR进行实时通信_3_通过CORS解决跨域
原文:一步一步学习SignalR进行实时通信_3_通过CORS解决跨域 一步一步学习SignalR进行实时通信\_3_通过CORS解决跨域 SignalR 一步一步学习SignalR进行实时通信_3_ ...
- 一步一步学习SignalR进行实时通信_2_Persistent Connections
原文:一步一步学习SignalR进行实时通信_2_Persistent Connections 一步一步学习SignalR进行实时通信\_2_Persistent Connections Signal ...
- 【转载】JMeter学习(一)工具简单介绍
JMeter学习(一)工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静 ...
随机推荐
- JAVA 静态代码块
特点:随着类的加载而执行,并且只会执行一次,并且还优先于主函数.作用,用于给类进行初始化 /* 静态代码块 格式: static{ 静态代码块中的执行语句 } 特点:随着类的加载而执行,并且只会执行一 ...
- Python标准库04 文件管理 (部分os包,shutil包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令 ...
- svn: Can't convert string from 'UTF-8' to native encoding 的解决办法
http://www.leakon.com/archives/610 http://www.toplee.com/blog/566.html http://svnbook.red-bean.com/e ...
- HtmlparseUtil.java
该类并不是一个通用的工具类,需要按自己的要求实现,这里只记录了Htmlparse.jar包的一些用法.仅此而已! 详细看这里:http://gundumw100.iteye.com/blog/7043 ...
- 总结Ajax跨域调用问题
原文:http://blog.csdn.net/wangxiaohu__/article/details/7294842 (一):动态脚本注入的方法.即在页面中动态生成<script>脚本 ...
- nbIoT基础概念
1. 物理信道(L1与L2之间) 上行:PRACH.PUSCH 下行:PBCH.PDCCH.PDSCH 2.逻辑信道(L2与L3之间) CCCH.DCCH.DTCH 3.信令(L3与NAS层之间) D ...
- 问答精华-IntelliJ IDEA快捷键大全
这篇文章介绍了idea的默认快捷键http://www.jikexueyuan.com/blog/229.html 另外:老师将快捷键设置为eclipse的了,你需要在preference里面找到ke ...
- ADO.NET 实体框架 资料收集
https://msdn.microsoft.com/en-us/data/aa937723.aspx https://msdn.microsoft.com/en-us/library/bb39957 ...
- POJ 2157 Evacuation Plan [最小费用最大流][消圈算法]
---恢复内容开始--- 题意略. 这题在poj直接求最小费用会超时,但是题意也没说要求最优解. 根据线圈定理,如果一个跑完最费用流的残余网络中存在负权环,那么顺着这个负权环跑流量为1那么会得到更小的 ...
- 硬盘安装ubuntu120.04分区方案
320G分区方案1/boot :256MB ext2swap :4G/ :40G ext4/tmp :5G ext4/var :20G ext4/usr :20G ext4/home :230GMB ...