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
相關文章
相關標籤/搜索