学习SignalR (1):认识SignalR

什么是SignalR?

ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信。什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相通知消息及调用方法,当然这是实时操作的。

WebSockets是HTML5提供的新的API,可以在Web网页与服务器端间建立Socket连接,当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时SignalR将使用其它技术来保证达到相同效果。

SignalR当然也提供了非常简单易用的高阶API,使服务器端可以单个或批量调用客户端上的JavaScript函数,并且非常 方便地进行连接管理,例如客户端连接到服务器端,或断开连接,客户端分组,以及客户端授权,使用SignalR都非常 容易实现。

SignalR 将与客户端进行实时通信带给了ASP .NET 。当然这样既好用,而且也有足够的扩展性。以前用户需要刷新页面或使用Ajax轮询才能实现的实时显示数据,现在只要使用SignalR,就可以简单实现了。最重要的是您无需重新建立项目,使用现有ASP .NET项目即可无缝使用SignalR。

这是百度词条上的解释

[渣译文] SignalR 2.0 系列: SignalR简介 博友翻译的一片博文

由此可知 SignalR 可以用来开发聊天室,

还可以用来开发

用户需要不停的刷新网页来看最新的数据;

在页面上通过实现长轮询来检索新数据(并显示)的程序,

比如:仪表板及监视型应用程序;协作型应用程序(如多人同时对文档进行编辑);作业进度更新及实时呈现表单等。

SignalR的应用可以使用服务总线,SQL SERVER或者Redis来扩展到数以千计的客户端上。

SignalR使用WebSocket传输方式——在可能的情况下。并且会自动切换到旧的传输方式(如HTTP长连接)。

WebSocket是SignalR最理想的传输方式,因为它可以最有效地利用服务器的内存,拥有最低的延迟及全面的底层功能(比如客户端和服务器间的全双工通讯),但它也有最严格的要求:服务器必须使用Windows Server 2012或Windows 8操作系统,同时.Net框架版本4.5及以上。如果不符合这些要求,SignalR将尝试采用其他传输方式以进行连接。

你可以通过启用Hub日志记录,并在浏览器的控制台中查看应用程序使用何种传输方式。

要启用日志记录,添加以下命令到客户端应用程序:

$.connection.hub.logging = true;

SignalR API中包含两中客户端-服务器进行通信的模型:永久连接和集线器(Hubs)。

永久连接表示一个发送单个、分组或广播消息的简单终结点。持久性连接API(在.NET 代码中由 PersistentConnection 类表示)可以让开发人员直接访问SignalR的底层通信协议。使用过基于连接API如WCF的开发人员将更熟悉连接通信模型。

集线器是基于API但级别更高一级的通信管道,它允许客户端和服务器上互相直接调用方法。SignalR能够奇妙的处理跨机器的调度,让客户端轻松的调用服务器上的方法,如同调用本地方法一样,反之亦然。使用过基于远程调用的AIP如.Net Remoting的开发人员将更熟悉集线器模型。使用集线器,你还可以将强类型的参数传递给方法并且对模型绑定。

大多数应用程序可以使用集线器的API,但在下列的情况下,你应当使用连接API:

  • 需要指定发送消息的格式。
  • 开发人员更喜欢使用消息传递和调度模型,而不是一个远程调用模型
  • 现有的应用程序中正在使用消息传递模型,计划移植到SignalR上。

支持的服务器操作系统

SignalR的服务器组件被以下服务器和客户端操作系统支持。

  • Windows Server 2012
  • Windows Server 2008 R2
  • Windows 8
  • Windows 7
  • Windows Azure

请注意,如果你想让SignalR使用的WebCosket,则需要Windows Server 2012或Windows 8 操作系统(WebSocket也可以被Windows Azure网站支持,前提是网站的.Net框架版本为4.5,并且在配置页中已经启用了WebSockets)。

支持的服务器.Net框架版本

SignalR 2.0仅支持.Net 框架4.5

支持的服务器IIS版本

SignalR被以下版本的IIS支持。

  • IIS 8 或 IIS 8 Express。
  • IIS 7 和 IIS 7.5,需要extensionless URLs支持。
  • IIS必须在集成模式下运行,不支持经典模式。当IIS运行在经典模式时,使用服务器发送事件可能带来30秒的消息延迟。
  • 托管应用程序必须运行在信任模式下。

请注意,如果使用客户端操作系统,比如用于开发(Windows 7 或 8),则不应使用IIS或Cassini的完整版本。因为客户端有10个并发连接的限制,要达到这一限制非常容易,因为连接是非常短暂的而且经常重新建立。并且在连接使用过后并不会立即销毁。你应当使用IIS Express。

还需要注意如果你想要SignalR使用WebSocket,则必须使用IIS 8 或IIS 8 Express,服务器必须使用Windows 8 , Windows Server 2012并且IIS必须启用了WebSocket,关于在IIS中启用WebSocket,请参阅IIS 8.0 WebSocket Protocol Support

客户端系统需求

SignalR可以用于各种客户端平台。本节介绍SignalR在Web浏览器、Windows桌面应用程序,Silverlight应用程序和移动设备中的系统要求。

Web浏览器

SignalR可以在各种Web浏览器中使用,但通常情况下,只有支持最新的两个版本。

应用程序在浏览器中使用SignalR必须使用jQuery版本1.6.4,或主要版本(如1.7.2,1.8.2,1.9.1等)。

SignalR在以下浏览器中可用:

  • IE8 , 9 , 10 , 11 桌面及移动,Win8的Modern,版本都支持。
  • 火狐:当前版本-1,Win及Mac版本。
  • Chrome:当前版本-1,Win及Mac版本。
  • Safari:当前版本-1,Mac及iOS版本。
  • Opera:当前版本-1,仅限Win版本。
  • 安卓浏览器。

除了浏览器要求,SignalR所使用的传输方式也有各自的要求,如下表:

传输方式 IE Chrome(Win或iOS) FF Safari(OSX或iOS) 安卓
WebSockets 10+ 当前-1 当前-1 当前-1 不支持
Server-Sent Events 不支持 当前-1 当前-1 当前-1 不支持
ForeverFrame 8+ 不支持 不支持 不支持 4.1
Long Polling 8+ 当前-1 当前-1 当前-1 4.1

不支持的浏览器

虽然在旧版本的浏览器中运行SignalR中可能不会有重大问题,但我们不会主动去测试SignalR在旧浏览器中的运行情况,也不会解决同旧浏览器的兼容问题。

请参考配置及测试列表: our testing matrix

Windows桌面和Sliverlight应用程序

除了在网络浏览器上运行,SignalR也可以被配置使用在独立的Windows客户端或Silverlight应用程序中。要使用SignalR,Windows桌面和Silverlight应满足以下系统需求:

  • 在Win XP SP3及以上,应用程序使用.Net 框架版本4。
  • 在Windows Vista及以上,应用程序使用.Net 框架版本4.5。

除了操作系统及框架版本需求,SignalR对于传输方式也有各自的要求,如下表:

传输方式 .Net应用程序 Silverlight
WebSockets Win 8及.Net 4.5以上 不支持
ForeverFrame 不支持 不支持
Server-Sent Events .Net 4以上 5以上
Long Polling .Net 4以上 5以上

Windows存储和Windows Phone应用程序

SignalR可以用在Windows存储和Windows Phone应用程序中,对于传输方式也有各自的要求,如下表:

传输方式 Windows存储/.Net Windows存储/JS Windows Phone/IE Windows不支持 Phone/.Net
WebSockets 不支持 Win8以上 8以上 不支持
ForeverFrame 不支持 Win8以上 7.5以上 不支持
Server-Sent Events Win8以上 不支持 不支持 8以上
Long Polling Win8以上 Win8以上 7.5以上 8以上

推荐更新

推荐以下SignalR服务器更新:

  • .Net框架4.5的更新程序,在这里
  • 微软会定期发布ASP.NET的快速更新补丁,应当及时安装它们。

以上是博友文章的节选

时间: 11-21

学习SignalR (1):认识SignalR的相关文章

【SignalR学习系列】3. SignalR实时高刷新率程序

创建项目 创建一个空的 Web 项目,并在 Nuget 里面添加 SignalR,jQuery UI 包,添加以后项目里包含了 jQuery,jQuery.UI ,和 SignalR 的脚本. 创建基础应用 添加一个 SignalR Hub 类,并命名为 MoveShapeHub ,更新代码. using Microsoft.AspNet.SignalR; using Newtonsoft.Json; namespace SignalRDemo3 { public class MoveShape

【使用SignalR+Asp.net创建实时聊天应用程序】

一.概述: 使用 ASP.NET 那么 SignalR 2 创建一个实时聊天应用程序.将 SignalR 添加 MVC 5 应用程序中,并创建聊天视图发送并显示消息. 在Demo中,将学习SignalR 开发任务包括 ︰ 向 MVC 5 应用程序添加那么 SignalR 图书馆. 创建集线器和浩然启动类,以将内容推送到客户端. 使用 web 页中的那么 SignalR jQuery 库发送邮件并显示更新从集线器. 下面的屏幕快照显示在浏览器中运行的已完成的聊天应用程序. 2.实现: 创建一个 A

SignalR——聊天室的实现

秒懂——SignalR ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据. 具体Demo参考:http://pan.baidu.com/s/1jH8LLie

Asp.net SignalR 实现服务端消息推送到Web端

原文:http://www.cnblogs.com/wintersun/p/4148223.html 之前的文章介绍过Asp.net SignalR,  ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.  今天我们来实现服务端消息推送到Web端,   首先回顾一下它抽象层次图是这样的: 实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加简单. 为了获取更好的可伸缩性, 我们引入消息队列, 看如下

SignalR搭建聊天室教程

开发环境:VS2013+.Net4.5+MVC5+jquery.signalR-2.2.0 1.新建项目 选择mvc 2.通过NuGet联机查找SignalR 如图安装第一个 3.在项目目录里添加Hub文件夹,并在里面新建ChatHub类,代码为: public class ChatHub : Microsoft.AspNet.SignalR.Hub { public void Hello() { Clients.All.hello(); } public void Send(string na

使用SignalR 2 注意事项

1.出现错误: signalR Error during WebSocket handshake: net::ERR_CONNECTION_RESET <system.web> <httpRuntime targetFramework="4.5" /> </system.web> 2.引用SignalR 最新版 SignalR 2 需要.Net 4.5 PM> Install-Package Microsoft.AspNet.SignalR 默

SignalR实现服务器与客户端的实时通信

介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程.实时Web功能使服务端代码推送内容到链接可客服端并立即应用成为可能,而不需要服务端等待客户端去请求数据. SignalR可用于任何你想添加实时Web功能到ASP.NET应用程序的情形,聊天室是一个常用的例子,用户可以刷新Web页面来获得新的数据,或者页面使用一个长轮询来取回数据,这都是SignalR可以应用的场景.比如说仪表盘和监视系统,实时游戏等. Sig

asp.net MVC 使用signalR +bootstrap 实现 progressBar

View @{ ViewBag.Title = "Progress bar test"; } @section scripts { <script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script> <!--Reference the autogenerated SignalR hub script. --> <script src="~/signalr/hu

Asp.NET MVC3 使用 SignalR 实现推送(接上)

一,Persistent Connection 示例教程 1,实现服务器端代码 1),编写服务器 PersistentConnection 代码 项目中 SignalR 目录下创建 PersistentConnection.cs 文件 using System; using System.Collections.Generic; using System.Threading.Tasks; using SignalR; namespace SignalTutorial.SignalR { publ

Microsoft.AspNet.SignalR 2.2

Nuget :http://www.nuget.org/packages/Microsoft.AspNet.SignalR/ What is SignalR? ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of adding real-time web functionality to applications. Real-time web functionality is the