C# web通讯解决方案

1.Socket html

2.Socket and websocket(HTML5)android

3.SignalRgit

一,简介

Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架。它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就没必要从新发送请求或使用轮询技术来获取消息。github

可访问其官方网站:https://github.com/SignalR/ 获取更多资讯。web

 

二,实现机制

SignalR 的实现机制与 .NET WCF 或 Remoting 是类似的,都是使用远程代理来实现。在具体使用上,有两种不一样目的的接口:PersistentConnection 和 Hubs,其中 PersistentConnection 是实现了长时间的 Javascript 轮询(相似于 Comet),Hub 是用来解决实时信息交换问题,它是利用 Javascript 动态载入执行方法实现的。SignalR 将整个链接,信息交换过程封装得很是漂亮,客户端与服务器端所有使用 JSON 来交换数据。json

 

ASP.NET signalr对ASP.NET开发者来讲是一个新的程序库,它能让咱们更加容易便捷地开发实时通讯功能;跨域

signalr容许客户端和服务器之间双向通讯。服务器能够将内容推送到已链接的客户端。浏览器

signalr支持Web Sockets,遇到其余兼容旧的浏览器signalr会用其余技术支持"双向通讯"(不要较真)。服务器

signalr包括这些API:链接管理(例如,链接和断开链接的事件)、对链接分组、和访问功能受权。websocket

 

signalr能够用来添加任何形式的“实时通讯”功能到您的ASP.NET应用程序。聊天是常常被用来做为一个应用例子,固然你能够作更多的事情。

用户经常经过刷新网页来查看新数据,或者页面支持长轮询来检索新的数据,使用signalr机制中支持这个方式,但它更智能更强大友好。

SignalR同时支持新类型的网络应用状况:须要高频度从服务端更新的状况(如实时游戏、看看这个ShootR game.)

SignalR提供了更加便捷简单的API,

 

signalr会自动地使用websocket通讯(只要条件容许),条件不知足的时候也会自动使用其余旧的传输方式。固然你能够直接让你的程序直接使用WebSocket.

使用signalr意味着原先你须要本身花精力作的工做不须要再本身作了,由于它已经为你作了。最重要的是,它会持续更新跟进WebSocket技术,因此你不用担忧

协议变化这类事情.

  signalr是对客户端和服务器之间通讯方式的一个抽象。一个signalr启动时使用HTTP链接,而后当环境容许就会直接提高到WebSocket链接。
WebSocket是SignalR的理想通讯方式,由于WebSocket使服务器的内存获得最有效的利用,同时WebSocket具备最低的延迟,并拥有最底层特征(如客户端和服务器之间的全双工通讯),但WebSocket也有最严格的要求:WebSocket须要服务器使用Windows Server 2012或Windows 8,和.NET框架4.5。若是不能知足这些要求,signalr将尝试使用其余通信方式进行链接。

 

下面的列表展现了SignalR决定使用具体哪一种通讯方式

  1. 若是浏览器<=Internet Explorer 8,用长轮询的方式
  2. 若是配置中指定了使用jsonp,则会使用长轮询的方式
  3. 如何须要建立跨域链接,将会如使用WebSocket,若是一下条件知足的话(不然用长轮询)
    1. 客户端支持WebSocket
    2. 服务端支持WebSocket
    3. 客户端支持Cross-Origin Resource Sharing,这个你们本身百度

 

创建一个通信方式须要必定的时间和客户机/服务器资源。若是客户机的功能是已知的,那么通讯方式在客户端链接开始的时候就能够指定。下面的代码片断演示了使用AJAX长轮询方式来启动一个链接,将若是咱们知道该客户端不支持其余的协议的话:

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

你能够指定一个替补方式,若是你想让客户端按照顺序尝试通信方式的话.下面的代码片断展现了尝试使用WebSocket,若是失败直接使用长轮询。

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

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

  • webSockets

  • foreverFrame

  • serverSentEvents

  • longPolling

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

  一个链接表明一个简单的终结点(至关于单个收件人、被分组的、广播消息 而言)

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

链接通讯模型,对习惯于使用相似WCF的同窗们比较熟悉.

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

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

 

 SignalR服务端组件能够被部署在一下的服务端和客户端操做系统中.注意使用WebSockets时,SignalR须要Windows Server 2012 或者Windows 8,

(WebSocket可以在Windows Azure Web Sites上使用,只要站点的.NET framework 版本达到4.5,且WebSocket能在站点的配置页面使用)

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

 当SignalR部署在IIS中,须要下面的版本支持。注意若是使用在咱们本身的操做系统上,如开发所用的环境(Windows 8 or Windows 7),全部版本的IIS和Cassini不该该被使用,由于这里有一个10同时并发的限制,由于链接是短暂、频繁从新创建的、且不会当即被dispose,因此很快就会达到限制。IIS Express能够被使用在通常的操做系统上。

  同时注意SignalR使用WebSocket时,IIS 8 或者 IIS 8 Express是你须要的,服务器必须用Windows 8, Windows Server 2012, 或者更高,同时WebSocket必须在IIS中可用。你能够去之类看看如何开启IIS的WebSocket功能:IIS 8.0 WebSocket Protocol Support

  • IIS 8 或者IIS 8 Express.
  • IIS 7 和 7.5. 须要支持 extensionless URLs .
  • IIS 必须跑在集成模式下; 经典模式是不行的.
  • 咱们的系统程序必须跑在彻底信任的模式下.

 SignalR可以在不少客户端平台下运行,本节描述了客户端浏览器、桌面应用程序、Silverlight应用程序及手机设备在使用SignalR的需求。

1.浏览器

  SignalR支持许多中种类的浏览器,尤为是最近浏览器的两个版本。

在浏览器中使用signalr的应用程序必须使用jQuery的版本>=1.6.4.

signalr可在如下浏览器中使用:

    •  IE:8, 9, 10, and 11.现代桌面版和手机版也支持
    • Mozilla Firefox:全部版本,请容许我这么说
    • Google Chrome: 全部版本,请容许我这么说
    • Safari:全部版本,请容许我这么说
    • Opera: 全部版本,只支持WINDOWS版本
    • Android 浏览器





      • 浏览器协议需求
        通信协议 Internet 
        Explorer
        Chrome
        (Windows or iOS)
        Firefox Safari 
        (OSX or iOS)
        Android
        WebSockets 10+ current - 1 current - 1 current - 1 N/A
        Server-Sent Events N/A current - 1 current - 1 current - 1 N/A
        ForeverFrame 8+ N/A N/A N/A 4.1
        Long Polling 8+ current - 1 current - 1 current - 1 4.1

         

        2.桌面应用程序和Silverlight程序

          注意:有人在作supersocket,因此咱们可让它运行得更强大,一下是官方给出的图

        桌面应用程序和Silverlight程序通信协议需求
        通信协议 .NET application Silverlight
        Web Sockets Windows 8+ and .NET 4.5+ N/A
        Forever Frame N/A N/A
        Server-Sent Events .NET 4+ 5+
        Long Polling .NET 4+ 5+

        3.Windows Store和Windows Phone应用程序

          如上,咱们能够借助第三方作事情

        Windows Store  和Windows Phone      通信协议需求
        Transport Windows Store/ 
        .NET
        Windows Store/ 
        JavaScript
        Windows Phone/
        IE
        Windows Phone/
        .NET
        WebSockets N/A Win8+ 8+ N/A
        Forever Frame N/A Win8+ 7.5+ N/A
        Server-Sent Events Win8+ N/A N/A 8+
        Long Polling Win8+ Win8+ 7.5+ 8+
        参考地址:http://www.cnblogs.com/humble/p/3856357.html
相关文章
相关标签/搜索