zoukankan      html  css  js  c++  java
  • 《ASP.NET SignalR系列》第二课 SignalR的使用说明

    从现在开始相关文章请到: http://lko2o.com/moon

    接续上一篇:《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和持久连接及潜在技术直接关系.

    http://i2.asp.net/media/4259622/intro_architecture.png?cdn_id=2014-07-01-001

    四、Hub如何工作

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

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

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

    View of Fiddler log showing SignalR traffic

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

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

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

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

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

    五、下一课:《ASP.NET SignalR系列》第三课 SignalR的支持平台

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

  • 相关阅读:
    git
    浏览器喧嚷过程
    B/S架构与C/S架构
    simpleDateFormat
    oracle中case when的用法
    Java程序利用Jdbc连接数据库
    List 和 Set与Map
    队列和栈
    toString方法分析
    java中的构造器
  • 原文地址:https://www.cnblogs.com/humble/p/3851205.html
Copyright © 2011-2022 走看看