《ASP.NET SignalR系列》第二课 SignalR的使用说明

接续上一篇:《ASP.NET SignalR系列》第一课 认识SignalR (还没有看的话,建议您先看看)

一、指定通信方式

建立一个通讯方式需要一定的时间和客户机/服务器资源。如果客户机的功能是已知的,那么通信方式在客户端连接开始的时候就可以指定。下面的代码片段演示了使用AJAX长轮询方式来启动一个连接,将如果我们知道该客户端不支持其他的协议的话:

connection.start({ transport: ‘longPolling‘ });

你可以指定一个替补方式,如果你想让客户端按照顺序尝试通讯方式的话.下面的代码片段展示了尝试使用WebSocket,如果失败直接使用长轮询。

connection.start({ transport: [‘webSockets‘,‘longPolling‘] });

指定将字符串常量定义如下:

  • webSockets
  • foreverFrame
  • serverSentEvents
  • longPolling

二、连接和集线器(Hubs)

SignalR API包括两种模型(用于客户端和服务端的通信):持久连接模型(Persistent Connections)和集线器(Hubs)模型

  一个连接代表一个简单的终结点(相当于单个收件人、被分组的、广播消息 而言)

持久连接API(在.NET代码中以PersistentConnection呈现),它使得开发人员便捷使用SignalR暴露的底层通讯协议

连接通信模型,对习惯于使用类似WCF的同学们比较熟悉.

  集线器模型是一个建立于连接API的高级管道.SignalR处理夸机器便捷的调度问题易如反掌,它使得客户端调用服务端的方法简单得犹如调用本地方法一样.反之亦然.

使用Hubs模型,或许对那些使用过.net remoting的人来讲就很容易理解了.使用Hub还可以让你对强类型参数方法、model绑定成为易事.

三、架构图

下面的架构图展示了Hubs和持久连接及潜在技术直接关系.

四、Hub如何工作

当服务器端代码调用客户端上的方法时,一个数据包会被传输在活跃的通信方式上,该通讯方式包含要调用的方法的名称和参数(当一个对象作为方法参数被传输时,把它序列化JSON)。然后客户端匹配方法的名字(客户端代码中定义的)。如果有匹配,该方法将会被执行.

我们可以用Fiddler.来监控方法的调用过程.下图展示了一个从服务端来的方法调用.

从Hub传来的方法叫做MoveShapeHub,将被调用的方法及叫做updateShape

在这个例子中,Hub的名字以H参数识别,方法名以M参数识别,传输的数据以A参数识别.

上面例子的代码:High-Frequency Realtime

四、如何选择通信模型呢?

大多数程序应该选择Hubs API.连接API可以在以下情形中使用:

  • 实际消息发送的格式需要被指定
  • 开发人员跟喜欢使用消息和调度模型
  • 一个已经存在的应用程序(它使用了消息模型)

兄台,为了提升我写作的热情,求支持推荐和关注,祝你玉树临风、气度不凡

《ASP.NET SignalR系列》第二课 SignalR的使用说明

时间: 2024-11-15 10:20:50

《ASP.NET SignalR系列》第二课 SignalR的使用说明的相关文章

SignalR系列教程:SignalR快速入门

---恢复内容开始--- 本篇是SignalR系列教程的第一篇,本篇内容介绍了如何创建SignalR应用,如何利用SignalR搭建简易的聊天室等,本篇内容参考自:http://www.asp.net/signalr/overview/older-versions/tutorial-getting-started-with-signalr,文中会有我对实例代码的一些理解. 首先我们创建ASP.NET空程序,并使用“程序包管理控制台”执行“Install-PackAge Microsoft.Asp

《ASP.NET SignalR系列》第三课 SignalR的支持平台

接着第二课:<ASP.NET SignalR系列>第二课 SignalR的使用说明 一.服务器系统要求 SignalR 服务端组件可以被部署在诸多的服务器配置中,本节描述了它所支持的操作系统版本,.NET framework,IIS.以及其他组件 二.支持的服务器操作系统 SignalR服务端组件可以被部署在一下的服务端和客户端操作系统中.注意使用WebSockets时,SignalR需要Windows Server 2012 或者Windows 8, (WebSocket能够在Windows

《ASP.NET SignalR系列》第四课 SignalR自托管(不用IIS)

接着上一篇:<ASP.NET SignalR系列>第三课 SignalR的支持平台 一.概述 SignalR常常依托于ASP.NET应用程序运行于IIS中,但它还可以自我托管(比如作为console winform.Windows service).只要我们使用self-host库就可以了. 该库向所有的SignalR 2库一样,构建于OWIN (Open Web Interface for .NET).OWIN定义了一个在.NET web 服务端和web 应用程序的抽象. OWIN解耦了从服

《ASP.NET SignalR系列》第一课 认识SignalR

一.概述 ASP.NET signalr对ASP.NET开发者来说是一个新的程序库,它能让我们更加容易便捷地开发实时通信功能; signalr允许客户端和服务器之间双向通信.服务器可以将内容推送到已连接的客户端. signalr支持Web Sockets,遇到其他兼容旧的浏览器signalr会用其他技术支持"双向通信"(不要较真). signalr包括这些API:连接管理(例如,连接和断开连接的事件).对连接分组.和访问功能授权. 二.认知随谈 signalr可以用来添加任何形式的“实

《ASP.NET SignalR系列》第五课 在MVC中使用SignalR

接着上一篇:<ASP.NET SignalR系列>第四课 SignalR自托管(不用IIS) 一.概述 本教程主要阐释了如何在MVC下使用ASP.NET SignalR. 添加SignalR库到MVC中. 创建hub和OWIN startup 类来推送内容到客户端. 在页面中使用SignalR jQuery 库发送消息和呈现从来得更新. 下面屏幕截图展示了一个完成的聊天应用程序 二.创建项目 1.用MVC5 .NET4.5 创建一个名为SignalRChat的项目 2.改变授权. 3.选择 N

[Asp.net 开发系列之SignalR篇]专题六:使用SignalR实现消息提醒

一.引言 前面一篇文章我介绍了如何使用SignalR实现图片的传输,然后对于即时通讯应用来说,消息提醒是必不可少的.现在很多网站的都有新消息的提醒功能.自然对于SignalR系列也少不了这个功能的实现了.在这篇文章中将介绍如何使用SignalR+iNotify库来实现新消息的声音和弹框提醒. 二.消息提醒的实现思路 消息提醒也就是当客户有新消息来时,在客户端的右下角进行弹框提醒.要实现这个功能的思路是: SignalR服务端推送消息到客户端的实现方式为调用客户端的receiveMessage方法

史上最全面的SignalR系列教程-目录汇总

1.引言 最遗憾的不是把理想丢在路上,而是理想从未上路. 每一个将想法变成现实的人,都值得称赞和学习. 致正在奔跑的您! 2.SignalR介绍 SignalR实现服务器与客户端的实时通信 ,她是一个面向 ASP.NET 开发人员的库,可简化将实时 web 功能添加到应用程序的过程. 实时 web 功能是让服务器代码将内容推送到连接的客户端立即可用,而不是让服务器等待客户端请求新数据的能力. 3.百度百科给它的定义 实现实时通信. 什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可

【SignalR学习系列】4. SignalR广播程序

创建项目 创建一个空的 Web 项目,并在 Nuget 里面添加 SignalR,jQuery UI 包,添加以后项目里包含了 jQuery,jQuery.UI ,和 SignalR 的脚本. 服务端代码 创建 Stock 类 using System; namespace SignalRDemo4 { public class Stock { private decimal _price; public string Symbol { get; set; } public decimal Pr

SignalR系列目录

[置顶]用SignalR 2.0开发客服系统[系列1:实现群发通讯] [置顶]用SignalR 2.0开发客服系统[系列2:实现聊天室] [置顶]用SignalR 2.0开发客服系统[系列3:实现点对点通讯] [置顶]用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR] [置顶]用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点] SignalR系列续集[系列6:使用自己的连接ID]