《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的支持平台

兄台,為了提升我寫作的熱情,求支持推薦和關注,祝你玉樹臨風、氣度不凡


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM