SiganlR 系列之概述

  • 简介

     SignalR 是微软的 http 长连接(以下简称长连接)框架,它的出现为我们提供了一套行之有效的实时通信的解决方案.

  • 背景

    在http 1.0 时代,preRequest 都会建立新的tcp链接,如果高并请求情况下,抛开其它影响因素(比如服务端的IO操作,db操作等), 其实是比较浪费性能.

    那在http 1.1时代,传输层 tcp 请求连接做了优化,有了分组,和并,重用tcp连接通道.  提高了tcp的可靠性及处理效率,但即便如此还是会存在tcp 的三次握手准备.

    我们知道http是无状态通信(历史原因),而且是"请求-响应模式".即单工通信. 这是很典型的短连接,但为了重用http的连接通道保持连接的可持续性,减少因为每次创建连接通道而损失的性能,提高响应时间,及时通信,以及节省宽带流量,避免轮询操作,减少不必要服务器资源浪费.长连接(服务推)模式应运而起.

    总而言之长连接有两个基本特征:1:带有状态性,2:是一个双工双工通信的过程.

  • 框架

    SignalR是Server-to-Client 的结构,它提供了丰富的API及良好的扩展:

    1:客户端的代Proxy(Javascript与.net app)

        2:客户端及服务端的身份认证

    3:服务端的Hub 及 PerisistentConnection API 

    4:服务端的依赖注入

    5:服务端的AOP

    6:服务端的宿主工具.

                                        

  • SignalR 支持多种客户端:

    1:浏览器应用包括:web Form ,Mvc ,wcf 等

    2:net client application 包括:控制台程序,windows service 等

    3:windows phone application  

    可以看出 SignalR 基本上支持所有的微软的产品终端.除了微软的系统外,同样也支持Android (可参看SignalA)

  • SignalR 支持四种通信传输方式:

    1:Web Sockets   html5 下的双工通信协议,浏览器版本低的话可能不支持.

    2:Server-Sent Events  服务推方式,是html5下的一个功能, 基本上浏览器都支持,但IE不支持.

    3:Forever Frame  我们常见的通过隐藏iFrame 来于服务端通信,此方式仅仅IE支持,而且要IE8+

    4:Ajax Long Polling   异步轮训请求服务端,所有的客户端都支持.

    这四种方式根据客户端的环境自动切换(微软已经封装好API,你也可以指定某一种传输方式),这些环境因素包括  浏览器版本,net framework 版本,操作系统.《点击参看官网上平台支持》,

    如果使用SignalR 的话建议至少 win7+,iis7+,net framework4.0+;

 

posted @ 2014-12-08 11:03  zyv  阅读(974)  评论(0编辑  收藏  举报