C# web通訊解決方案

來源:互聯網
上載者:User

標籤:

1.Socket 

2.Socket and websocket(HTML5)

3.SignalR

一,簡介

Signal 是微軟支援的一個運行在 Dot NET 平台上的 html websocket 架構。它出現的主要目的是實現伺服器主動推送(Push)訊息到用戶端頁面,這樣用戶端就不必重新發送請求或使用輪詢技術來擷取訊息。

可訪問其官方網站:https://github.com/SignalR/ 擷取更多資訊。

 

二,實現機制

SignalR 的實現機制與 .NET WCF 或 Remoting 是相似的,都是使用遠程代理來實現。在具體使用上,有兩種不同目的的介面:PersistentConnection 和 Hubs,其中 PersistentConnection 是實現了長時間的 Javascript 輪詢(類似於 Comet),Hub 是用來解決即時資訊交換問題,它是利用 Javascript 動態載入執行方法實現的。SignalR 將整個串連,資訊交換過程封裝得非常漂亮,用戶端與伺服器端全部使用 JSON 來交換資料。

 

ASP.NET signalr對ASP.NET開發人員來說是一個新的程式庫,它能讓我們更加容易便捷地開發即時通訊功能;

signalr允許用戶端和伺服器之間雙向通訊。伺服器可以將內容推送到已串連的用戶端。

signalr支援Web Sockets,遇到其他相容舊的瀏覽器signalr會用其他支援人員"雙向通訊"(不要較真)。

signalr包括這些API:串連管理(例如,串連和中斷連線的事件)、對串連分組、和訪問功能授權。

 

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

C# web通訊解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.