一步一步学习SignalR进行实时通信\_1_简单介绍

SignalR


前言

本来前几个月想写一系列的关于SignalR的文章,但是由于在做项目,时间非常的紧急,花了1天的时间大致了解了下SignalR,并实现了个在线聊天的小功能,本来记录一系列关于SignalR的文章,没想到写了MVC5使用SignalR进行双向通信(1)之后就停下来了,现在稍微空闲点,抽点时间来完整的学习SignalR。在园子里也有许多关于SignalR的文章,如此篇简单的介绍了下SignalR,并实现了个实时聊天的功能,但是实际上SignalR还有许许多多的东西能够被我们挖掘到,我希望能记录下我详细学习的过程。

SignalR介绍

SignalR是一个框架,它能够有助于我们搭建一个实时互动、多用户的应用程序。它的一个很大的优点是对开发人员是透明的,它会自己决定使用那个技术(长轮询、持久性框架、WebSockets等)最好,并自动管理连接和断开连接。详情请看园子另一篇文章。

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

长篇大论不是我的风格,我更专注于某个技术能实现怎样的功能,我在这里简单的提一下,有这样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 下载

最新文章

  1. python爬虫成长之路(一):抓取证券之星的股票数据
  2. AndroidStudio导入Library
  3. 手机版web相关meta配置
  4. OAF_开发系列10_实现OAF动态LOV设定
  5. redis-cli -h xxxxx -p xxxx monitor 监控host为xxxx,端口为xxx,redis连接及读写操作
  6. Ubuntu下查看linux版本,内核版本,系统位数,gcc版本
  7. Hark的数据结构与算法练习之珠排序
  8. python 练习 25
  9. python抓取网页例子
  10. JDBC的几个步骤
  11. 【锋利的jQuery】学习笔记01
  12. Qt5程序开机自启动(windows)
  13. Android Application Fundamentals——Android应用程序基础知识
  14. 想到一个赚钱的APP
  15. 关于Netty的入门使用
  16. ffmpeg.c函数结构简单分析(画图)
  17. Jenkins高级用法 - Pipeline 安装
  18. [leetcode-120] 三角形最小路径和
  19. React之ant design的table表格序号连续自增
  20. 老男孩Python全栈视频

热门文章

  1. linux下shell脚本学习
  2. PostgreSQL 数据迁移
  3. [SQL]不知道
  4. Grid Infrastructure Single Client Access Name (SCAN) Explained (文档 ID 887522.1)
  5. Linux下串口ttyS2,ttyS3不能用的问题解决办法
  6. 01-事件处理简介/UIView拖拽
  7. Oracle 启动状态解说
  8. [转载]python中multiprocessing.pool函数介绍
  9. 将你的代码上传 Bintray 仓库
  10. SICP 换零钱的迭代版本