實時通訊系列之SignalR詳解(從.Net 到.Net Core)【即將更新】


一. 簡單說幾句

  最早使用SignalR的時候大約是兩年前了,記得當時是一個OA中消息的實時提醒,輪詢的方式有點耗資源,WebSocket寫起來又比較麻煩,最終選擇了SignalR,當時是什么版本已經記不清了,反正現在最新的是2.3.0(這里指 .Net FrameWork下,而非Core下),這期間又陸續的在幾個項目中用到SignalR,感覺還不錯,使用起來也比較便捷,直到今年6月份,再次接到一個OA項目,需要用到SignalR,也是借着這次機會把自己這期間的研究的一些東西和朋友們分享一下,也希望得到朋友們在使用上的一些建議。
  這次寫這個系列,是最后做的這個目錄,原計划兩個周寫完,但計划終究趕不上變化,到今天為止,已經三個多周,但前面的六篇文章已經告一段路,這期間,不少朋友建議我使用.Net Core下的SignalR,我粗略的看了看,Core下的SignalR在使用上差別不是太大,這里也是個人的精力和能力有限,在每天七個半小時工作之外,盡可能的去做一些更有意思的事,Core下的SignalR也在后面的計划中,屆時還希望朋友們多多支持。
  該系列后面的計划:
    ①:結合業務整合個完整的案例進去。
    ②:詳細研究研究Core下的SignalR。
GitHub地址:https://github.com/SignalR/SignalR

    

二. 整體介紹

   該系列從原生Websocket說起,然后進行Signalr的基本介紹,然后PersistentConnection模式,然后介紹Signalr的靈魂Hub模型以及一些零散知識點,最后以SignalR的一種分布式部署方案結束該系列。

  作為目錄篇,這里還是有必要再啰嗦一些什么是SignalR了,看過我之前文章的朋友們可以直接跳過了。

  SignalR是微軟的一個開源項目,為客戶端和服務器端實時通訊的問題提供了很好的解決方案,通過簡單的配置和API調用,即可完成相應的通訊功能的開發。

  SignalR對目前為止幾類主流的傳輸協議進行了封裝,讓瀏覽器自行選擇可以兼容的版本(當然也可以自行指定),這樣就解決了開發者使用原生WebSocket時候的痛點了。

SignalR大一統:

  它封裝了 WebSocket、ForeverFrame、ServerSentEvents、LongPolling四種主要的傳輸協議。

  ① WebSocket:它是HTML5提供的一種在單個 TCP 連接上進行全雙工通訊的協議。

  ② ForeverFrame(永久幀):它適用於IE瀏覽器,是在頁面中插入一個隱藏的iframe,利用其src屬性在服務器和客戶端之間創建一條長鏈接,服務器向iframe傳輸數據(通常是HTML,內有負責插入信息的javascript),來實時更新頁面。

  ③ SeverSentEvents(服務器發送事件,也成EventSourse):顧名思義。

  ④ longPolling(Ajax長輪詢):長輪詢是對輪詢的改進,客戶端通過請求連接到服務器,並保持一段時間的連接狀態,直到消息更新或超時才返回Response並中止連接,可以有效減少無效請求的次數。

 

三. 系列章節

   下面我們將通過以下幾個章節,系統的介紹一下SignalR中各種知識點,各種配置,由WebSocket原生寫法起,以一個聊天室案例為基礎,貫穿整個系列,歡迎廣大博友前來交流、指正、學習。

        第一節:.Net版基於WebSocket的聊天室樣例

        第二節. SignalR開篇以及如何指定傳輸協議

        第三節:SignalR之PersistentConnection模型詳解(步驟、用法、分組、跨域、第三方調用)

        第四節:SignalR靈魂所在Hub模型及再探聊天室樣例

        第五節:SignalR大雜燴(與MVC融合、全局的幾個配置、跨域的應用、C/S程序充當Client和Server)

        第六節:SignalR完結篇之依賴注入和分布式部署

        第七節:Core SignalR中的重連機制和心跳監測機制詳解

        第八節:敬請期待

        第九節:敬請期待

 

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鵬飛)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 聲     明1 : 本人才疏學淺,用郭德綱的話說“我是一個小學生”,如有錯誤,歡迎討論,請勿謾罵^_^。
  • 聲     明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。
 


免責聲明!

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



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