一步一步学习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应用程序).它可以用来测试静 ...
随机推荐
- Introduction to ASP.NET Web Programming Using the Razor Syntax (C#)
1, http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-c 2, Introduction ...
- 在Linux环境下安装和配置phpmyadmin
phpmyadmin是一种MySQL的图形化管理工具,该工具允许你在web界面上管理你的mysql数据库,不可谓不方便快捷. 此次安装与配置是在centos 6.4系统下,该系统已部署lnmp环境.关 ...
- 使用bs4对海投网内容信息进行提取并存入mongodb数据库
example: http://xyzp.haitou.cc/article/722427.html 首先是直接下载好每个页面,可以使用 os.system( "wget " ...
- 关于DevExpress的GridView.VisibleIndex的赋值问题
在DevExpress GridControl中,GridView中 如果VisibleIndex=-1,则这列将不会显示(不可见): 如果VisibleIndex>=0,则按照VisibleI ...
- Delphi ServerSocket,ClientSocket示例
Delphi ServerSocket,ClientSocket示例 2008-05-09 16:20 Delphi TServerSocket,TClientSocket实现传送文件代码 1.建立两 ...
- [SQL]一组数据中Name列相同值的最大Je与最小je的差
declare @t table(name varchar(),qy varchar(),je int) insert into @t union all union all union all un ...
- MS Sqlserver 备份数据库SQL
通过作业的方式调用SQL执行自动备份,可以解决忘记备份数据库的问题,记录一下 declare @FileFullName varchar(40); declare @FileName varchar( ...
- 菜鸟-手把手教你把Acegi应用到实际项目中(3)
这一节我们将要了解的是AnonymousProcessingFilter.RememberMeProcessingFilter和LogoutFilter三个过滤器. 1.AnonymousProces ...
- adb 命令模拟按键事件 模拟 点击 事件
有时我们需要程序模拟按钮或点击,而手机本身又没有,哪么可以采取adb 模拟实现,最后再去实际设备去测试(前期一般都拿不到设备): 如模拟上一首,下一首,暂停等,手机上是没有的,但有些设备上是有的: / ...
- jmeter接口自动化,你敢想,我敢玩
飞测说:大家好,我是黑夜小怪,今天我又来了分享了.最近用jmeter比较多,做过自动化测试的都知道,我们脚本和数据维护是你十分头疼的事情,刚好黑夜小怪我最近接触到一个项目的接口测试,今天我们一起分享下 ...