史上最全面的SignalR系列教程-1、認識SignalR
SignalR 是什么?
SignalR 是一個面向 ASP.NET 開發人員的庫,可簡化將實時 web 功能添加到應用程序的過程。 實時 web 功能是讓服務器代碼將內容推送到連接的客戶端立即可用,而不是讓服務器等待客戶端請求新數據的能力。
SignalR 是一個集成的客戶端與服務器庫,基于瀏覽器的客戶端和基于 ASP.NET 的服務器組件可以借助它來進行雙向多步對話。 換句話說,該對話可不受限制地進行單個無狀態請求/響應數據交換;它將繼續,直到明確關閉。 對話通過永久連接進行,允許客戶端向服務器發送多個消息,并允許服務器做出相應答復,值得注意的是,還允許服務器向客戶端發送異步消息。是一個完全基于客戶及服務器端解決方案,它是以JS作為客戶端和ASP.NET作為服務端來創建這類的應用。
傳統HTTP采用的是大家熟知的“拉模式”,即客戶端發出的每次請求,服務端都是被動處理。此場景下客戶端是老大,很顯然只有一方主動,操作與處理起來就沒那么完美。為了能讓服務端也能主動,html5的出現讓這種變得可能,大家知道html5中有兩種主動模式。第一種叫做websockect,WebSockets是Html5提供的新的API,可以在Web網頁與服務器端間建立Socket連接,它是基于tcp模式的雙工通訊。還有一種叫做SSE,也就是客戶端來訂閱服務器的一種事件模型。在html5出來之前,如果要做到服務器主動,我們只能采用變相的longpool和iframe流勉強實現。這就相當于要實現服務端的主動就有了4種方案。SignalR的出現是我們每位開發者的福音。它對上面四種方案進行了高度的封裝,也就是說signalR會在這四種技術中根據瀏覽器和服務器設置采取最優的一種模式。

對于.NET開發者的福音,.NET平臺為我們提供了一種簡潔高效智能的實時信息交互技術->SignalR,它集成了上述數種技術,并能根據配置自動或手動選擇其最佳應用。

可以用SignalR做什么?
-
SignalR可用于將任何類型的"實時"web 功能添加到 ASP.NET 應用程序。 比如最常用的即時消息、聊天。 只要用戶刷新 web 頁面以查看新數據或頁面實現長輪詢若要檢索新數據,可以考慮對它使用 SignalR。 包括儀表板和監視應用程序,協作應用程序 (如同時進行編輯的文檔),作業的進度更新到并實時窗體。
-
SignalR還可以用于需要高頻率從服務器中更新的全新類型weB應用程序,例如在線聊天、實時游戲、天氣、股票信息更新等實時應用程序。
-
SignalR 提供一個簡單的 API,用于創建從服務器端.NET 代碼中調用 JavaScript 函數在客戶端瀏覽器 (和其他客戶端平臺) 的服務器到客戶端的遠程過程調用 (RPC)。 SignalR 還包括連接管理的 API (例如,連接和斷開連接事件),并對連接進行分組。

-
SignalR自動處理連接管理,并允許您同時將消息廣播到所有連接的客戶端,如聊天室。 還可以將消息發送到特定的客戶端。 客戶端和服務器之間的連接是持久性的。
-
SignalR與常用的Web瀏覽器上請求-響應模式不同,它支持"服務器推送"功能,可以調用遠程過程調用 (RPC)。
-
SignalR應用程序可以橫向擴展到數千個客戶端使用服務總線、 SQL Server 或Redis。
最重要的是SignalR 是開放源代碼,有興趣的朋友可以研究SignalR
SignalR 和 WebSocket
前面對SignalR已經有了一個非常全面而清晰的認識,對于SignalR 和 WebSocket關系,我們需要看下什么是WebSocket?
WebSocket是HTML5提供的一種在單個 TCP 連接上進行全雙工通訊的協議,目前chrome、Firefox、Opera、Safari等主流版本均支持,Internet Explorer從10開始支持。另外因為WebSocket 提供瀏覽器一個原生的 socket實現,所以直接解決了 Comet 架構很容易出錯的問題,而在整個架構的復雜度上也比傳統的實現簡單得多。
WebSocket本質上是一個基于TCP的持久化協議,相對于HTTP這種非持久的協議來說,它能夠更好的節省服務器資源和帶寬,并且真正實現實時通信。其優點在前面我們已經做了對比,最大的缺點就是對舊版本瀏覽器不支持。至此SignalR的出現,完美的解決了種瀏覽器的問題,SignalR不僅可以實現WebSocket的所有功能,還對舊版本瀏覽器做了支持。SignalR可自動或手動選擇使用WebSocket傳輸還是其他替代方式傳輸,以實現實時Web技術。
SignalR簡化了構建實時應用的過程,它包括了一個Asp .Net服務器端庫和一個Js端庫,集成了數種常見的消息傳輸方式,如long polling,WebSocket,并提供相應的Api供開發人員選擇如何調用,幫助其可以簡單快速地實現客戶端與服務器端相互間的實時通信。
當環境條件合適時,SignalR將WebSocket作為底層傳輸方式的優先實現,當然,它也能很高效地回退到其他技術。同時,SignalR提供了非常良好的Api以供遠程調用(RPC) 瀏覽器中的js代碼。
當WebSockets可用時(即瀏覽器支持Html5)SignalR使用WebSockets,當瀏覽器不支持時WebSockets時,SignalR將使用其它技術來保證達到相同效果。
瀏覽器和客戶端之間想要進行WebSocket通信的話,從一開始的握手階段,就要從HTTP協議升級為WebSocket協議,這是服務器根據WebSocket發送的請求包決定的。
參考文章
一路走來數個年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過下面的地址了解詳情。
RDIFramework.NET官方網站:http://www.rdiframework.net/
RDIFramework.NET官方博客:http://blog.rdiframework.net/
同時需要說明的,以后的所有技術文章以官方網站為準,歡迎大家收藏!
RDIFramework.NET框架由海南國思軟件科技有限公司專業團隊長期打造、一直在更新、一直在升級,請放心使用!
歡迎關注RDIFramework.net框架官方公眾微信(微信號:guosisoft),及時了解最新動態。
掃描二維碼立即關注

作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機號)
框架官網:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發框架
,
給用戶和開發者最佳的.Net框架平臺方案,為企業快速構建跨平臺、企業級的應用提供強大支持。
關于作者:系統架構師、信息系統項目管理師、DBA。專注于微軟平臺項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及數據庫領域有一定的造詣。現主要從事基于
RDIF
框架的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS博客共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯系我,非常感謝。

SignalR 是一個面向 ASP.NET 開發人員的庫,可簡化將實時 web 功能添加到應用程序的過程。 實時 web 功能是讓服務器代碼將內容推送到連接的客戶端立即可用,而不是讓服務器等待客戶端請求新數據的能力。
SignalR 是一個集成的客戶端與服務器庫,基于瀏覽器的客戶端和基于 ASP.NET 的服務器組件可以借助它來進行雙向多步對話。 換句話說,該對話可不受限制地進行單個無狀態請求/響應數據交換;它將繼續,直到明確關閉。 對話通過永久連接進行,允許客戶端向服務器發送多個消息,并允許服務器做出相應答復,值得注意的是,還允許服務器向客戶端發送異步消息。是一個完全基于客戶及服務器端解決方案,它是以JS作為客戶端和ASP.NET作為服務端來創建這類的應用。
浙公網安備 33010602011771號